读书人

正则替换有关问题

发布时间: 2012-02-19 19:43:39 作者: rapoo

正则替换问题
<img src= "http://image2.133.com.cn/dy/c/l/2007-02-03/U1473P1T1D12215102F21DT20070203030914.JPG " border= "1 " alt= "安徽滁州悬赏5万征爆炸抢劫银行案线索(组图) ">
替换成
<img src= "U1473P1T1D12215102F21DT20070203030914.JPG " border= "1 " alt= "安徽滁州悬赏5万征爆炸抢劫银行案线索(组图) ">


<a class=akey href= "http://news.133.com.cn/c/l/2007-01-28/124812161396.shtml " target=_blank> 128爆炸抢劫银行案 </a>
替换成
128爆炸抢劫银行案


需要考虑img和href格式的不同变化




[解决办法]
断网三天,好不容易解放,看正则问题进来的,正则我会写,可是VB代码我不会,呵呵,给楼主提供参考的C#代码吧

前一个,@ "( <img\s+[\s\S]*?src=[ " " ']?)[^\s]*/([^/\s]*?)(\s+[\s\S]*?> ) "为匹配用的正则, "$1$2$3 "为替换后结果
string yourStr = .................;
string resultStr = Regex.Replace(yourStr,@ "( <img\s+[\s\S]*?src=[ " " ']?)[^\s]*/([^/\s]*?)(\s+[\s\S]*?> ) ", "$1$2$3 ",RegexOptions.IgnoreCase);

后一个,@ " <a\s+[^> ]*?> ([\s\S]*?) </a> "为匹配用正则, "$1 "为替换后结果
string yourStr = .................;
string resultStr = Regex.Replace(yourStr,@ " <a\s+[^> ]*?> ([\s\S]*?) </a> ", "$1 ",RegexOptions.IgnoreCase);

[解决办法]
第一个例子
dim reg1 as regex '下面的替换以日期2007-02-03/形式为终止符
dim str1 as string= reg1.replace( "源字符串 ", "(? <= " <img src= " " ").+(/d{4}-/d{2}-/d{2}/)? ", " ")
第二个例子
有点难度,感觉使用正则匹配出来再处理好点,要不就把 <> 之间字符都去掉
reg1.replace( "源字符串 ", "(^ <*.?~> ", " ")


不知道楼主为何这么做,有时程序并没有你想像的那么智能...
[解决办法]
1.
dim yourStr as string = ......
dim resultStr as string = Regex.Replace(yourStr, " <img\\s+src=\ ".+/(.+?\\..+?)\ "(.+?)> ", " <img src=\ "$1\ "$2> ", RegexOptions.IgnoreCase)
2.
dim yourStr as string = ......
dim resultStr as string = Regex.Replace(yourStr, " <a\\s+class=akey\\s+href=\ ".+?\ "\\s+target=_blank> (.+?) </a> ", "$1 ", RegexOptions.IgnoreCase)
[解决办法]
dim yourStr as string = ......
dim resultStr as string = Regex.Replace(yourStr, " <img\\s+src=\ ".+/(.+?\\..+?)\ "(.+?)> ", " <img src=\ "$1\ "$2> ", RegexOptions.IgnoreCase)
[解决办法]
正则真不太懂!

读书人网 >VB Dotnet

热点推荐