2009-11-22 31 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