正则表达式不起作用

时间:2013-01-27 19:20:30

标签: c# regex

大家好我有下一篇文章:

</form>onclick="g(null,null,'.htaccess','touch')">Touch</a> <br><br><pre class=ml1>
DirectoryIndex index.php
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</pre></div>

我尝试使用以下代码解析<pre class=ml1></pre></div>之间的所有内容: -

string con = Regex.Match(content, @"<br><br><pre class=ml1>(.*?)</pre></div>", RegexOptions.Multiline).Groups[1].Value;`

但它不起作用。为什么呢?

2 个答案:

答案 0 :(得分:1)

你需要

RegexOptions.Singleline

所以.匹配每个字符,包括换行符。

由于您未使用RegexOptions.Multiline^,因此不需要$。 (多行模式使它们匹配行的开头和结尾,而不是输入字符串的开头和结尾。)

答案 1 :(得分:0)

您的代码唯一的问题是您使用的Regex.MultiLine应该是Regex.SingleLine

string con = Regex.Match(content, "<br><br><pre class=ml1>(.*?)</pre></div>", RegexOptions.Singleline).Groups[1].Value;

RegexOptions.MultiLine

  

多线模式。改变^和$的含义,使它们匹配   任何一行的开头和结尾,而不仅仅是   整个字符串的开头和结尾。

RegexOptions.SingleLine

  

指定单行模式。改变点(。)的含义   匹配每个字符(而不是除\ n之外的每个字符)。