2013-09-29 68 views
0

我想從所有鏈接的文本中刪除(<a href=""></a>),但標記屬性爲href="site.com"(例如)的人除外。刪除所有標記<a>用記事本+

<a href="site.com">text</a> 
<a href="google.com">text</a> 
<a href="yandex.com">text</a> 

這就是最後兩個鏈接了。你能告訴它正確的正則表達式嗎(在記事本+ +中)。

+0

請顯示您嘗試過的內容。 – Jerry

+0

給定示例的結果應該是什麼。請修改您的問題以顯示確切的結果。 –

+0

我只知道'.*'刪除所有鏈接,我需要刪除所有鏈接,除了那些href =「site.com」。怎麼做? –

回答

3

首先,.*應該是懶惰的,因爲否則的話,你將會超過必要的匹配。

<a href=".*?">.*?</a> 

接下來,你可以使用負前瞻,以防止比賽從<a href="site.com">text</a>和你做這樣的:如果你用什麼替代將是唯一<a href="site.com">text</a>將留給

<a href="(?!site.com">).*?">.*?</a> 

結果。

如果你想保持文本,環繞括號中的文字,並調用它的替換:

<a href="(?!site.com">).*?">(.*?)</a> 

而且隨着$1取代。

+0

謝謝,但我不工作!不要在這個正則表達式中尋找鏈接! –

+0

@ДокторСкальпинг你檢查了正則表達式複選框嗎? http://i.stack.imgur.com/YTTyu.png – Jerry

+0

當然,但你的Notepad ++版本是什麼? –

0

一個非常簡單的和通用的解決方案可能是:

Find: <a(.*?)>(.*)</a> 
Replace: $2 

$ 2進行離開超鏈接的文本。

0

如果我想刪除所有超鏈接但保留文本,這些都不起作用。該示例甚至沒有找到任何鏈接。

<a(.*?)>(.*)</a> 

以下正確找到鏈接

<a .*?.*?</a> 

但如果我使用$ 1或$二隻是刪除了鏈接&錨文本

我想保持文本

我解決方案:

<a .*?.*?> 

這將刪除鏈接的開始標記,並保留文本&剩餘標記 - 然後您可以刪除</a>