2011-11-25 33 views
0

如何替換鏈接中的特定文本,但跳過已經鏈接的文本?如何替換鏈接中的文字,但跳過已經鏈接的文字?

例子:

<a href="helloworld.com">Lorem ipsum dolor sit amet</a>, consectetur 
adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore 
magna aliqua. Lorem ipsum dolor sit amet, consectetur <a 
href="adipisicing.com">adipisicing</a> elit, sed do eiusmod tempor 
incididunt ut labore et dolore <a href="helloworld.com">magna aliqua. 
Lorem ipsum</a> dolor sit amet, consectetur adipisicing elit, sed do 
eiusmod tempor incididunt ut labore et dolore magna aliqua. 

正如你看到的,我需要在第二個語句來代替「Lorem存有」<a href="somewhere.com">Lorem ipsum</a>,但跳過「Lorem存有」已經在聯繫。

謝謝!

+0

事前請使用搜索功能。還請解釋你是如何得出結論使用正則表達式的(你還嘗試過什麼?),或者如果這是一個實際的約束。 – mario

+0

我用搜索,但沒有找到任何我需要的東西。我試過了,但我的表情取代了已經在鏈接中的文字。 – RKI

+0

你目前的正則表達式在哪裏?的 – ThiefMaster

回答

4

正則表達式是不是很適合處理HTML。每個解決方案都會在評論,嵌入式JavaScript或格式錯誤的HTML上失敗。

這就是說,如果你嚴格控制你的文檔的結構,你可以嘗試正則表達式的方法。爲了滿足每一個「Lorem存有」不是a標籤內,我會使用

Lorem ipsum(?=([^<]*($|<a |<[^/]|</[^a]))*($|(?<=a))) 

該語句使用look ahead assertion如果接下來收盤前一個接着一個開a標籤匹配「Lorem存有」或者沒有進一步的標籤。請參閱RegExr

正如你所看到的,它可能是更好的使用HTML解析器。 =)

+0

超級感謝!其作品! – RKI

+0

+1分析器建議。 –