<div id="aaa">
<div>1
</div>2
</div>
<div class="aaa">
<div>
<div>My List</div>bbbbbbb
</div>s
</div>s
<div class="aab">ac
<div>sss</div>nnn
</div><div id="aaa">
<div>1
</div>2
</div>
<div class="aaa aab">
My page
</div>s
<div class="aab">ac
<div>sss</div>nnn
</div>
请问:这个正则怎么写?要匹配出class包含aaa的div所有内容。
第一个应匹配出 :
<div class="aaa">
<div>
<div>My List</div>bbbbbbb
</div>s
</div>
第二个应匹配出:
<div class="aaa aab">
My page
</div>
<div class="aaa">(((?'Open'<[^<>]*>)[^<>]*)+((?'-Open'</[^<>]*>)[^<>]*)+)*(?(Open)(?!)))</div>
Regex regex = new Regex("<div class=\"aaa\">(((?'Open'<div>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>", RegexOptions.Multiline | RegexOptions.Compiled);
MatchCollection matches = regex.Matches(testmcontent);
Match m = reg.Match(Str);
if (m.Success)
{
str+= = m.Value;
}
<div>.*?</div>
<DIV>((?!</DIV>).)*</DIV>
试了下,我6楼的写的基本能用 ...
<div>1
</div>2
</div>
<div class=""aaa"">
<div>
<div>My List</div>bbbbbbb
</div>s
</div>s
<div class=""aab"">ac
<div>sss</div>nnn
</div>
afafadsfs
<div class=""aaa bbb"">ac
<div>aaabbbb</div>nnn
</div>
";
Regex reg =new Regex( "<div[^>]*?class=\"aaa\\s*[^\"]*?\"[^>]*?>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>");
MatchCollection ms = reg.Matches(str);
foreach(Match m in ms)
{
Response.Write(Server.HtmlEncode(m.Value)+"<BR>");
}[/code]
Regex regDiv = new Regex(@"(?is)<div(?:(?!class=|>).)*class=(['""]?)(?=(?:(?!" + key + @").)*" + key + @")(?:(?!\1|>).)*\1[^>]*>(?>(?<o>)<div[^>]*>|(?<-o>)</div>|(?!</?div\b).)*(?(o)(?!))</div>");
MatchCollection mc = regDiv.Matches(yourStr);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}