Регулярное выражение для соответствия текста между <a ..> и </a> - PullRequest
2 голосов
/ 19 января 2010

Может ли кто-нибудь дать регулярное выражение, соответствующее тексту ссылки между тегами <a> and </a> в фрагменте HTML.

Пример данных: <a href="link.html">Link Title</a> - 15 comments <br/> <a href="otherlink.html">Some other Title</a> - 6 comments

Требование: мне нужноизвлечь только текст ссылки (то есть тот, который между <a> and </a> - заголовком ссылки и некоторым другим заголовком ) для использования в моем приложении.

Обратите внимание, что текст ссылки может содержать не английские символы, а также все возможные знаки препинания.Я пытался использовать '.'оператор, но, поскольку он выполняет жадное совпадение , он сопоставляет весь текст между первым <a> и последним </a>.Но я хочу только текстовые ссылки.

Любая помощь?

Ответы [ 3 ]

6 голосов
/ 19 января 2010
2 голосов
/ 19 января 2010

Попробуйте

<a[^>]+>(.*?)</a>
0 голосов
/ 19 января 2010

Это обсуждалось буквально десятки раз уже на StackOverflow (и тысячи раз на других форумах), но, очевидно, это все еще нуждается в повторении: это невозможно сделать .

Регулярные выражения могут анализировать только обычные языки. HTML не Обычный язык. Доказательство того, что вы не можете анализировать HTML с помощью регулярных выражений, является обычным (каламбурным) домашним заданием почти во всех колледжах и университетах на планете. Это доказали буквально десятки тысяч людей. Он настолько водонепроницаем, насколько может быть математическое доказательство. Это очень короткое, очень простое, очень доступное доказательство. Никто не сможет найти в нем скрытый недостаток, потому что доказательство настолько простое и маленькое, что просто нигде недостаток не может скрыть.

О, и я упоминал , что нельзя сделать ?

Это не проблема коммивояжера, для выполнения которой требуется очень много времени . Это не P = NP, где мы не знаем, правда это или нет.

Это действительно, абсолютно, на 100%, положительно, полностью, доказуемо невозможно.

Я забыл. Я уже упоминал , что нельзя сделать ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...