日期:2014-05-16  浏览次数:21003 次

c#的正则问题,真是搞不明白了,到底要怎么弄?
我用WebClient获取网页原来,用正则提取内容,遇到如下问题:
首先,我直接查看浏览器源文件,然后用正则匹配,成功提取
正则:<a href=\"u.php\?uid=\d+\">.*</a>

然后我发现WebClient获取到的内容是不一样的,都有一个\符号,于是在正则里多加一个
<a href=\\"u.php\?uid=\d+\\">.*</a>
结果如下图,这也能获取到

可是我放到程序里,双引号出问题了。

于是将双引号换成单引号,发现多了2个反斜杠

去掉一个,结果还是不行


究竟要怎样弄啊,疯了都快
------解决方案--------------------
\这个不要乱加,这个代表转义
------解决方案--------------------
加了@
双引号应该用 ""表示
比如 @"""",代表一个双引号,等价 "\""
------解决方案--------------------
 string tmp= string.Format(@"<a href=\\{0}u.php\?uid=\d+\\{1}>.*</a>","\"","\"");

------解决方案--------------------
Regex reg = new Regex(@"<a href=""u.php\?uid=\d+"">.*?</a>");
.*加个问号,否则你可能会得到不正确的结果。
------解决方案--------------------
你被转义搞晕了,正则里的\在C#还要转义
var reg = new Regex("<a href=(['\"])u.php\\?uid=\\d+(\\1)>.*</a>");