日期:2014-05-20  浏览次数:20784 次

正则表达式高手求助!~~顶者有分
我现在的问题如下:
有N多HTML文件要对其分析。
首先只要Body标签里的内容,把之外的标签过滤掉;
(过滤掉Body里面的 <script> 标签和 <!--   --> 注释标签
然后body标签里的 <p> 、 </p> 、 <br> 、 <img> 标签留着。

可以分步用正则,Thanks

------解决方案--------------------
Regex.Replace(Htmlstring, " <script[^> ]*?> .*? </script> ", " ", RegexOptions.IgnoreCase);
Regex.Replace(Htmlstring, " <!--.* ", " ", RegexOptions.IgnoreCase);

可以找(过客)帮忙!俺只会这两个了.
------解决方案--------------------
string yourStr = .............;
string resultStr = Regex.Replace(yourStr, @ "[\s\S]*? <body\s+[\s\S]*?> ([\s\S]*?) </body> [\s\S]* ", "$1 " , RegexOptions.IgnoreCase); //这是body里的内容

一步步来,这是body的内容

PS:谢楼上的支持
------解决方案--------------------


Htmlstring = Regex.Replace(Htmlstring, " <script[^> ]*?> .*? </script> ", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, " <!--.*--> ", " ", RegexOptions.IgnoreCase);

------解决方案--------------------
要用这个System.Text.RegularExpressions.RegexOptions.Singleline
否则*不包括换行
------解决方案--------------------
顶`~
------解决方案--------------------
顶一个 学习
------解决方案--------------------
rule = @ " <body(?=[ > ])[^> ]*> ([\s\S]*?) </body> ";
rule2 = @ " <script(?=[ > ])[^> ]*> [\s\S]*? </script> ";
rule3 = @ " <!--[\s\S]*?--> ";
string tempstr = " ";

//提取 <body> 中的内容

Match match = Regex.Match(查询字符串,rule,RegexOptions.IgnoreCase);
if(match.Success)
{
tempstr = Regex.Replace(match.Group[1].Value, " ",rule2,RegexOptions.IgnoreCase);
tempstr = Regex.Replace(tempstr , " ",rule3,RegexOptions.IgnoreCase);
}
//tempstr 就是你需要的


------解决方案--------------------
可以这么写
------解决方案--------------------
mark
学习
------解决方案--------------------
不敢献丑了
------解决方案--------------------
发现lxcnn(过客)时时观察着正则的问题
速度就是快啊 等我到 菜都凉了 汗~
------解决方案--------------------
接分。
------解决方案--------------------
学习