正则表达式匹配不出来。
我想匹配出 <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">