具有所有属性的锚标记的正则表达式

时间:2012-02-06 09:56:18

标签: regex expression

我正在尝试使用正则表达式替换文本字符串中的所有链接以获取链接的值。

链接可能如下所示:

<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

6 个答案:

答案 0 :(得分:23)

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

它远非完美,但你需要提供更多关于正确匹配和不匹配的例子(例如,什么是空格?)

答案 1 :(得分:12)

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

此标记将匹配任何<a ...>...</a>标记,包括正确匹配的包含&lt;或任何完整的标签,如:

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.

它还包括捕获标记属性的组(如class =&#34;&#34;,href =&#34;&#34;等)并包含(标记之间的内容)可以是如果你不需要它们就被移除。

如果你想跨越多行捕捉一个&#34; s&#34;在&#34; g&#34;之前或之后最后的旗帜。请注意&#34; s&#34; flag可能无法用于所有正则表达式。

捕获示例(不使用&#34; s&#34;标记 - 尚未受到regexr支持):http://regexr.com/39rsv

答案 2 :(得分:2)

从接受的答案中稍微纠正一下。这是正确的正则表达式:/<a[^>]*>([^<]+)<\/a>/g。用于关闭锚标记(/)的正斜杠</a>未被转义,因此不会进行匹配。

答案 3 :(得分:0)

我无法获得此处列出的任何答案以起作用...不确定他们是否正确阅读了您的问题。

我阅读您的帖子的方式是您在寻找<a href="abcdefg">example tag</a>的内在

(aka提取“示例标签”)

但是我设法提出了这个解决方案。尽管这真是个令人沮丧的浏览器,但它似乎并不能在所有浏览器中正常工作(又名Edge,即IE,尚未尝试FF)

此链接显示其正常工作 https://regexr.com/5dd0m

(?<=<a.*>).+(?=<\/a>)

答案 4 :(得分:-1)

这样的事情就足够了

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

答案 5 :(得分:-1)

尝试这100%的工作

activity_counts += activity_count;