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>");