|M| 学习正则第二贴:HTML源码,根据里面的某个标示Replace掉这些文字
http://community.csdn.net/Expert/topic/5568/5568768.xml?temp=.4035456
求一个正则要求是
以: <tr 开头
以: </tr> 结束
中间包含文字: <div
且中间不包含文字: runat= "server "
HtmlContent = Regex.Replace(HtmlContent, "?? ", " ", RegexOptions.IgnoreCase);
谢谢
------解决方案--------------------正则是弱项,看看
------解决方案--------------------頂..........,學習
------解决方案--------------------up
------解决方案--------------------关注
------解决方案--------------------UP
------解决方案--------------------正在学习,不会
------解决方案--------------------楼主最好给几个例子,没例子做测试比较麻烦,而且未必符合楼主要求
按楼主要求,写了两种方法,第一种用法简单,但是效率不高,第二种写起来麻烦点,但用起来会比第一种灵活,大数据量的效率应该会高些
方法一:直接replace
stirng yourStr = .............;
string resultStr = Regex.Replace(yourStr, @ " <tr\s(?=[\s\S]*? <div[\s\S]*? </tr> )(?![\s\S]*? runat= " "server " "[\s\S]*? </tr> )[^> ]*> [\s\S]*? </tr> ", " ", RegexOptions.IgnoreCase);
方法二:使用委托
string resultStr = Regex.Replace(yourStr, @ " <tr\s[^> ]*> [\s\S]*? </tr> ", new MatchEvaluator(expReplace), RegexOptions.IgnoreCase);
private string expReplace(Match m)
{
if (Regex.IsMatch(m.Value, @ " <div ") && !Regex.IsMatch(m.Value, @ "runat= " "server " " "))
{
return " ";
}
else
{
return m.Value;
}
}
PS:如果楼主想学正则,我倒是可以推荐个教程和工具,正则入门很容易,但是要精通,就需要做大量的练习,呵呵,不是一两帖就可以做到的
------解决方案--------------------up
------解决方案--------------------lxcnn(过客) ( ) 信誉:
-----------------------
你推荐的教程和工具地址呢?
谢谢!
------解决方案--------------------\ <tr..?\ <div..[^runat=\ "server\ "]..\ <\\tr\>
放弃perl5太难了吧
------解决方案-------------------- <tr> <td.*?> <div\s+id= "div "> .*? </td> </tr>
------解决方案--------------------学习了
------解决方案--------------------呵呵,我给你破解了它
------解决方案--------------------呵呵,如果这样就要谢过楼上了,没玩过破解,不知从哪入手
------解决方案--------------------学习~
------解决方案--------------------学习~~