Регулярное выражение для тега привязки со всеми атрибутами - PullRequest
9 голосов
/ 06 февраля 2012

Я пытаюсь получить регулярное выражение для замены всех ссылок из текстовой строки на значение ссылки.

Ссылка может выглядеть следующим образом:

<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

Ответы [ 5 ]

23 голосов
/ 06 февраля 2012
/<a[^>]*>([^<]+)<\/a>/g

Это далеко не идеально, но вам нужно предоставить больше примеров того, что является правильным соответствием, а что нет (например, как насчет пробелов?)

12 голосов
/ 05 ноября 2014
/<a[\s]+([^>]+)>((?:.(?!\<\/a\>))*.)<\/a>/g

Этот тег будет соответствовать любому тегу <a ...>...</a>, включая правильно совпадающие теги, содержащие <или любые полные теги, такие как: </p>

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

.*

с группами захвата:
  • 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 = "", href = "" и т. д.) и содержат (что находится между тегами), которые можно удалить, если они вам не нужны.

Если вы хотите захватить несколько строк, добавьте«s» до или после флага «g» в конце.Обратите внимание, что флаг "s" может работать не во всех разновидностях регулярного выражения.

Пример захвата (без использования флага "s" - пока не поддерживается regexr): http://regexr.com/39rsv

2 голосов
/ 05 июля 2016

Просто небольшая поправка от принятого ответа.Это правильное регулярное выражение: /<a[^>]*>([^<]+)<\/a>/g.Косая черта (/) для закрытия тега привязки </a> не экранирована, поэтому совпадение не будет.

0 голосов
/ 30 октября 2016

попробуй это 100% работа

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

0 голосов
/ 06 февраля 2012

Что-то вроде этого должно быть достаточно

<a.*?>(.*)?</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...