涉及到嵌套的,用正则肯定要用平衡组了Regex reg = new Regex(@"<div\s*class=""Ccontent""[^>]*>(((?<o>)<div[^>]*>|(?<-o>)</div>|(?:(?!</?div)[\s\S]))*)(?(o)(?!))</div>", RegexOptions.IgnoreCase| RegexOptions.Compiled); Match m = reg.Match(yourStr); if (m.Success) { richTextBox2.Text = m.Value; }当然,涉及到效率问题的时候,就要综合考虑了,可以参考这个帖子中我的回复 求一正则表达式
System.Net.WebRequest wReq;
System.Net.WebResponse wResp;
wReq = System.Net.WebRequest.Create(Web.ToString());
wResp = wReq.GetResponse();//获取Response通过这样获取html的代码,然后再通过正则表达式来提取网站的内容信息
<div class="Ccontent">\s*( <div>[\s\S]*? </div>\s*)*? </div>
strReg += "<div>)(?<A0>.+?)(?=</div>)";
//例
string input = @"<div id=""a"">AAA<div id=""b"">BB<div id=""c"">CCC</div> B</div> </div> ";
string id = Console.ReadLine(); //输入要取得div的id
while (id.Trim().ToUpper().CompareTo("G")!=0)
{
string pattern = @"<div id=""" + id + @""">[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>";
Console.WriteLine(Regex.Match(input, pattern));
id = Console.ReadLine();
}
@"(?is)<div class=""Ccontent"">.*?(((?'Open'<div[^>]*>).*?)+((?'-Open'</div>).*?)+)*(?(Open)(?!))</div>"
// 我试了一下可以
欢迎新手,高手
群号:57718204给你个pattern
pattern = string.Format("<(\\S*?)[^>]*id=(['|\"]){0}(\\2)[^>]*>(?><\\1[^>]*?>(?<n>)|</\\1>(?<-n>)|(?!<\\1[^>]*?>|</\\1>).)*(?(n)(?!))</\\1>", id);
Match m = reg.Match(yourStr);
if (m.Success)
{
richTextBox2.Text = m.Value;
}当然,涉及到效率问题的时候,就要综合考虑了,可以参考这个帖子中我的回复
求一正则表达式