2012-02-06 89 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(.*)(")>