首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

正则表达式匹配不出来。该如何处理

2012-04-09 
正则表达式匹配不出来。我想匹配出 div idnbaVidRsltBody stylevisibility: visible 和 div id

正则表达式匹配不出来。


我想匹配出 <div id="nbaVidRsltBody" style="visibility: visible; "> 和 <div id="nbaVidPagBtm"> 之间的内容

为什么使用以下两种都匹配不出来?错在哪里?

C# code
Regex r = new Regex(@"(?is)(?<=id=""nbaVidRsltBody"")(?:(?!id=""nbaVidPagBtm"").)*(?=id=""nbaVidPagBtm"")");


C# code
Regex r = new Regex(@"(?is)(?<=id=""nbaVidRsltBody""[^>]+>).+?(?=id=""nbaVidPagBtm"")");


[解决办法]
C# code
            Regex re = new Regex(@"<div\b[^>]*?id=""nbaVidRsltBody""[^>]*>([\s\S]*?)<div\b[^>]*?id=""nbaVidPagBtm""[^>]*>", RegexOptions.IgnoreCase);            Match match = re.Match(str);            if(match.Success)            {                Console.WriteLine(match.Groups[1].Value);            }
[解决办法]
@"(?is)(?<=<div id=""nbaVidRsltBody""[^>]*>).+?(?=<div id=""nbaVidPagBtm"">)"
[解决办法]
楼主怎么知道你给的两个正则没效果,用什么测试的,要么是你的测试数据有问题,要么是你的测试工具或代码有问题,你给的正则是可以取到结果的

C# code
string test = @"图挂掉了,具体情况看下面<div id=""nbaVidRsltBody"" style....>....(这里还有很多内容)<div id=""nbaVidPagBtm"">  ";Regex r = new Regex(@"(?is)(?<=id=""nbaVidRsltBody""[^>]+>).*?(?=id=""nbaVidPagBtm"")"); MatchCollection mc = r.Matches(test);foreach (Match m in mc){    richTextBox2.Text += m.Value + "\n";}/*-----输出-----....(这里还有很多内容)<div */
[解决办法]
建立一个txt文档,内容如下:
HTML code
<div id="nbaVidRsltBody" style="visibility: visible; "> fdahslflkaslkashllfhads347r84<div id="nbaVidPagBtm"> <div id="nbaVidRsltBody" style="visibility: visible; ">1231<div id="nbaVidPagBtm"> <div id="nbaVidRsltBody" style="visibility: visible; ">dfs4<div id="nbaVidPagBtm"> <div id="nbaVidRsltBody" style="visibility: visible; "> f333ds<div id="nbaVidPagBtm"> <div id="nbaVidRsltBody" style="visibility: visible; "> fdse34434343<div id="nbaVidPagBtm"> 

热点排行