得用平衡组了
Regex re = new Regex("(?is)<div class=\"info\">[^<>]*(((?'TAG'<div[^>]*>)[^<>]*)+((?'-TAG'</div>)[^<>]*)+)*(?(TAG)(?!))</div>", RegexOptions.None);
MatchCollection mc = re.Matches("text");
foreach (Match ma in mc)
{
}
上面的做法并不全对,因为在用的排除式[^<>]*会除去所有含有其它非div标签的div对,所以得到的结果并不满意
在此基础上修改得到:
<div class="info">((?!</?div[^>]*>).|\n)*(((?'TAG'<div[^>]*>)((?!</?div[^>]*>).|\n)*)+((?'-TAG'</div>)((?!</?div[^>]*>).|\n)*)+)*(?(TAG)(?!))</div>