<!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">
给匹配到,如果不用 . 可以找到换行的 可是是最大匹配 我想做最小匹配不知道怎么做,求大神们帮忙
4 个解决方案
#1
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();
#2
效果如下图:
#3
(?is)<![^>]*>
#4
楼主的代码
string patternNote = @"(<!--[\S\s].*?-->)|(<![\S\s].*?>)";
用了[\s\S]表示任意字符,后面就不该再加小数点.了,小数点.匹配除换行符\n外的任意字符,所以这里匹配不了换行,去掉小数点可以满足你的要求
string patternNote = @"(<!--[\S\s]*?-->)|(<![\S\s]*?>)";
不过这样写效率比较低,可以用排除型字符组
string patternNote = @"<![^>]*>";
PS:由于这里不涉及到字母,也不涉及到小数点,所以不需要使用(?is)
string patternNote = @"(<!--[\S\s].*?-->)|(<![\S\s].*?>)";
用了[\s\S]表示任意字符,后面就不该再加小数点.了,小数点.匹配除换行符\n外的任意字符,所以这里匹配不了换行,去掉小数点可以满足你的要求
string patternNote = @"(<!--[\S\s]*?-->)|(<![\S\s]*?>)";
不过这样写效率比较低,可以用排除型字符组
string patternNote = @"<![^>]*>";
PS:由于这里不涉及到字母,也不涉及到小数点,所以不需要使用(?is)
#1
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();
#2
效果如下图:
#3
(?is)<![^>]*>
#4
楼主的代码
string patternNote = @"(<!--[\S\s].*?-->)|(<![\S\s].*?>)";
用了[\s\S]表示任意字符,后面就不该再加小数点.了,小数点.匹配除换行符\n外的任意字符,所以这里匹配不了换行,去掉小数点可以满足你的要求
string patternNote = @"(<!--[\S\s]*?-->)|(<![\S\s]*?>)";
不过这样写效率比较低,可以用排除型字符组
string patternNote = @"<![^>]*>";
PS:由于这里不涉及到字母,也不涉及到小数点,所以不需要使用(?is)
string patternNote = @"(<!--[\S\s].*?-->)|(<![\S\s].*?>)";
用了[\s\S]表示任意字符,后面就不该再加小数点.了,小数点.匹配除换行符\n外的任意字符,所以这里匹配不了换行,去掉小数点可以满足你的要求
string patternNote = @"(<!--[\S\s]*?-->)|(<![\S\s]*?>)";
不过这样写效率比较低,可以用排除型字符组
string patternNote = @"<![^>]*>";
PS:由于这里不涉及到字母,也不涉及到小数点,所以不需要使用(?is)