正则表达式的最小匹配
在做提取网页正文的东西,用的HtmlAgilityPack 可是通过里面Document.InnerText()方法取出来的内容含有网页的注释信息,想把这些内容去除。如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
搜狐-中国最大的门户网站
<!--2008.1.1-->
.
.
.
<!--asfadsfg-->
然后我是想通过正则表达式找出里面的注释以及第一段的信息,再将其删除,现在的正则表达式是这么写的:
string patternNote = @"(<!--[\S\s].*?-->)|(<![\S\s].*?>)";
可是这样不能把<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
给匹配到,如果不用 . 可以找到换行的 可是是最大匹配 我想做最小匹配不知道怎么做,求大神们帮忙
[解决办法]
string str = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN""
""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">sdjfksjfdlkdsjf<!--2008.1.1-->sjdfkjdd";
Regex regex = new Regex(@"(?is)<[^>]*?>");
MatchCollection mc = regex.Matches(str);
foreach (Match item in mc)
Console.WriteLine("匹配项:"+item.Value);
Console.WriteLine();
str = regex.Replace(str, "");
Console.WriteLine("去除注释之后:"+str);
Console.Read();