2009-11-22 83 views
0

我有一个看起来像这样的代码块:如何使用正则表达式来查找和替换html表标签?

<table border="0"><tr><td><img src='http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg'/>&nbsp;&nbsp;</td><td>Gift of Life Marathon Blood Drive - "the group stood before a sea of 1,000 Long Trail Brewing Co. pint glasses..." (Rutland Herald, VT)</td></tr></table> 

我需要找到&代替一切,但http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg什么也没有。所以最后,它应该只是网址。

,这将是不一样的,因为我们通过循环的唯一值是URL和第二组的TD标签内的说明。描述中的字符数不会总是一样的。

我正则表达式巴迪&看着参考网站小时昨晚。匹配单个字符看起来非常简单,但我认为需要一段时间才能找出这个问题。

我相信有不同类型的RegEx。一个我有工作在雅虎管道,不知道它是什么类型:http://pipes.yahoo.com/pipes/pipe.edit?_id=436a316234281be629d357bbecae46b1

回答

0

管道是一个稍微不同的野兽。因为我在这是新的,我结束了创建3条独立的查找和替换规则下得到的代码只是基本网址:

更换^ * =与[无]

这留下:

'http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg'/&gt;&nbsp;&nbsp; Gift of Life Marathon Blood Drive - "the group stood before a sea of 1,000 Long Trail Brewing Co. pint glasses..." (Rutland Herald, VT) 

更换。与[无]

这只是删除'在开始。

更换

最终结果 '*与[无]

这将删除开头的JPG后的一切。':http://profile.ak.fbcdn.net/object3/686/9/q142163634919_249.jpg

我敢肯定有办法的3条规则组合成其中一个,但当我试图做到这一点时,我得到了错误。这工作,并一贯这样做。

1

我会强烈建议使用HTML解析器。 HTML是不是正规,因此用正则表达式解析将是容易出错,边界情况等

+0

当你需要创建强大的商业软件时,HTML解析器是很好的需求,但这也意味着你不使用雅虎管道,而且你不解析自己没有生成的HTML。 这将是很好的建议一个HTML解析器,以帮助解决这个问题... – rdmueller 2009-11-22 15:38:22

+0

我的重点主要是强大的。 – 2009-11-22 16:22:01

2

如果您的HTML看起来很像这个上面,它应该很容易:
img src='([^']*)'
()表示,这将存储在一个特殊的结果是可读的。所以不要看看正则表达式匹配什么,但结果是可变的。
[^'] *匹配每个字符,但是匹配“'”。

...我不认为你需要一个HTML解析器来完成这个任务。只有当你想创建真正健壮的代码时:-)

+0

不知道我是否正确实现了这一点,但我尝试用[无]替换img src ='([^'] *)',并得到以下输出:

​​</>    ​​人生马拉松献血的礼物 - “集团1000个长尾酿造有限公司品脱眼镜的前海站...”(Rutland使者,VT)
- 我也尝试过用img src ='([^'] *)替换[nothing],但不会导致更改。我想到了它。请参阅以下解决方案。 – Adam 2009-11-22 16:12:16

相关问题