日期:2014-05-18  浏览次数:20422 次

正则问题。。。。。。。。。。。。 急```` 在线等。。。
Html为     :    
 
<a     href=\ "/Expert/TopicView1.asp?id=5408274\ "     target=\ "_blank\ "> 做网上型的一些系统时应该如何估量价格和报价 </a>     \r\n\r\n    
<a     href=\ "/Expert/TopicView1.asp?id=67545654\ "     target=\ "_blank\ "> 奇怪现象 </a>     \r\n\r\n    
<a     href=\ "/Expert/TopicView1.asp?id=78980987\ "     target=\ "_blank\ "> 如果编程实现URL重写 </a>     \r\n\r\n    
 
这样的。    
我用正则这样取id=多少,标题是什么,不知道为什么老是取不到标题?,帮看下下面那错了!!     谢了。    
 
 
MatchCollection     mc     =     Regex.Matches(Html,     " <a\\s+href=\ "/Expert/TopicView2\\.asp\\?id=(? <urlid> [^\ "]*?)\ "[^> ]*?> (? <biaoti> [^ </]*?) ",     RegexOptions.IgnoreCase);    
foreach     (Match     m     in     mc)    
{    
                      Response.Write(m.Groups[ "urlid "].Value     +     " <br> ");    
                      Response.Write(m.Groups[ "biaoti "].Value     +     " <br> ");    
                      Response.Flush();    
}    


------解决方案--------------------
看你的例子里是TopicView1,而正则里是TopicView2,所以我用了\d+

(? <biaoti> [^ <]*?)这里为非贪婪模式,它将尽可能少的匹配,如果后面没有普通文本字符,它将什么都不匹配,而加了 </a> 普通的文本字符之后,正则式首先要尽可能的匹配成功,然后才去考虑贪婪与非贪婪的匹配

或者按你这前的写法,去掉最后一个“?”,变为贪婪模式,也可以得到正确结果
------解决方案--------------------
LS的已经给你解决了
抽空看看正则语法吧 练一练就明白了