2012-02-06 117 views
5

我試圖獲得一個正則表達式來替換鏈接值的文本字符串中的所有鏈接。所有屬性錨定標記的正則表達式

鏈接可能看起來像這些:

<a href="http://whatever" id="an_id" rel="a_rel">the link</a> 
<a href="/absolute_url/whatever" id="an_id" rel="a_rel">the link</a> 

我想正則表達式,我得到:the link

謝謝

問候。

+0

相關http://stackoverflow.com/questions/238891/regular-expressions-match-all-anchors-with-optional-attributes – 2014-01-01 20:04:03

回答

16
/<a[^>]*>([^<]+)<\/a>/g 

這是遠遠不夠完善,但你需要提供什麼是正確的匹配更多的例子,什麼是不(如怎麼樣空格?)

+0

喜弗洛裏安,其他例如: a link a link Lobo 2012-02-06 11:53:22

+0

下面是使用你的例子我的模式的一個例子:http://regexr.com?2vu1u – 2012-02-06 12:05:25

+0

注: 這不會嵌套的Elemen工作TS。 正則表達式應該不區分大小寫,因爲都是有效的。 – Kshitij 2018-01-04 09:56:40

-1

像這樣的東西應該是足夠

<a.*?>(.*)?</a> 
9
/<a[\s]+([^>]+)>((?:.(?!\<\/a\>))*.)<\/a>/g 

這人會匹配任何<a ...>...</a>標籤包括含有<或任何整標記,如正確匹配的:

blah blah <a href="test.html">This line contains an HTML opening < bracket.</a> blah blah 
blah blah <a href="test.html">This line contains <strong>bold</strong> text.</a> blah blah 

將捕獲:

<a href="test.html">This line contains an HTML opening < bracket.</a> 
  • 與捕獲組:
    • href="test.html"
    • This line contains an HTML opening < bracket.

<a href="test.html">This line contains <strong>bold</strong> text.</a> 
  • 與捕獲基團:
    • href="test.html"
    • This line contains <strong>bold</strong> text.

它還包括捕獲組的標籤屬性(如CLA ss =「」,href =「」等)以及包含(標籤之間的內容),如果不需要它們,可以將其刪除。

如果您想跨多行捕獲,請在結尾處的「g」標誌之前或之後添加「s」。請注意,「s」標誌可能不適用於所有類型的正則表達式。

捕獲的例子(不使用「S」標誌 - 不支持regexr尚):http://regexr.com/39rsv

+1

你有一個未轉義的正斜槓 – 2015-10-26 18:23:16

+0

好抓@BrianLeishman,謝謝! – Jim 2015-10-26 18:46:01

+0

你會如何修改這個以覆蓋'bla bla yikes''?那是現在殺了我的那個人。 – Jerry 2017-03-12 03:20:58

2

從接受的答案只是一點點修正。這是正確的正則表達式:/<a[^>]*>([^<]+)<\/a>/g。用於關閉錨標記</a>的正斜槓(/)未被轉義,因此不會進行匹配。

-1

試試這個100%的工作

(?i)<a(.*)(")>

相關問題