问题描述
做一个CS程序,用户在界面一个Textbox填上正则表达式,程序根据正则表达式来分析网页,以下是我写的:stringpp=Textbox1.Text;//这里取到用户填写的正则表达式RegexregUrl=newRegex(@pp,RegexOptions.IgnoreCase);foreach(MatchminregUrl.Matches(content)){this.Urls.Push(m.Groups["src"].Value.ToString());}在Textbox1.Text里面,用户填写的是这样的:<a[^>]*?hrefs*=s*(""(?<src>[^""]+?)""|'(?<src>[^']+?)'|(?<src>[^s>]+))[^>]*?>.*</a>现在在匹配<a>时,比如说这样的:<ahref="http://mil.news.sohu.com/wojun.shtml"target=_blank>我军动态</a>在取匹配到的m.Groups["src"].Value值时,却会是这样的:""http://mil.news.sohu.com/wojun.shtml""就是说凡是有双引号的它都会有一个/,如何才能取到这样的值:http://mil.news.sohu.com/wojun.shtml
解决方案
解决方案二:
用户输入?你会后患无穷的""(?<src>[^""]+?)""这里应该都是一个双引号整个正则表达式这样写有问题,也没必要,不过如果是让用户输入,不说什么了...
解决方案三:
嗯!谢谢二楼的。不过问题仍没有解决。
解决方案四:
那就说下你的content字符串是怎么得到的,还有""http://mil.news.sohu.com/wojun.shtml""这个结果是在哪里看到的,Debug时还是输出之后还有就是这个正则是否允许修改CSDN现在很恶心,乱给加空格,所以看不出问题所在来,把你的content内容和所用正则用“插入源代码”功能,放在代码块里,再贴一下