0

我有如下代码块:

<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 标记中的 url 和描述。描述中的字符数并不总是相同的。

我得到了 Regex Buddy,昨晚看了几个小时的参考网站。匹配单个字符似乎很简单,但我认为我需要一段时间才能弄清楚这一点。

我相信有不同类型的 RegEx。我正在使用的是 Yahoo Pipes,不确定它是什么类型: http://pipes.yahoo.com/pipes/pipe.edit?_id= 436a316234281be629d357bbecae46b1

4

3 回答 3

2

如果你的 html 看起来和上面完全一样,那应该很容易:
img src='([^']*)'
() 表示这将存储在一个特殊的结果中。所以不要看正则表达式匹配什么,而是看结果变量。
[^']* 匹配除“'”之外的所有字符。

...而且我认为您不需要 HTML 解析器来完成此任务。仅当您想创建真正健壮的代码时:-)

于 2009-11-22T14:36:17.180 回答
1

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

于 2009-11-22T14:34:07.970 回答
0

管道是一种略有不同的野兽。因为我是新手,所以我最终创建了 3 个单独的查找和替换规则,以将代码简化为基本 url:

将 ^.*= 替换为 [无]

这留下:

'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 个规则组合成一个规则,但是当我尝试这样做时出现错误。这有效并且始终如一。

于 2009-11-22T16:16:46.140 回答