Создание регулярного выражения Java для получения ссылки href - PullRequest
1 голос
/ 29 ноября 2011

Извините, если раньше об этом спрашивали, но я не смог найти ответы в Интернете. Мне трудно понять обратное выражение к этому регулярному выражению:

"\" [^>] * \ ">"

Я хочу использовать replaceAll для замены всего, кроме ссылки. Так что, если бы у меня был тег, похожий на этот:

<p><a href="http://www.google.com">Google</a></p>

Мне нужно регулярное выражение, которое бы удовлетворяло этому:

s.replaceAll (regex, "");

, чтобы дать мне этот вывод:

http://www.google.com

Я знаю, что есть лучшие способы сделать это, но я должен использовать регулярное выражение. Любая помощь очень ценится, спасибо!

Ответы [ 3 ]

14 голосов
/ 29 ноября 2011

Вам не нужно использовать replaceAll.Лучше использовать группы шаблонов, такие как:

Pattern p = Pattern.compile("href=\"(.*?)\"");
Matcher m = p.matcher(html);
String url = null;
if (m.find()) {
    url = m.group(1); // this variable should contain the link URL
}

Если у вас есть несколько ссылок в ваш HTML, выполните m.find() в цикле.

0 голосов
/ 29 ноября 2011

Вы можете оформить заказ http://regexlib.com/, чтобы получить всю необходимую помощь по регулярным выражениям.А тот, что ниже, для URL:

^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$
0 голосов
/ 29 ноября 2011

Если у вас всегда есть одна такая ссылка в строке, попробуйте это:

"(^[^\"]*\")|(\"[^\"]*)$"
...