2016-05-06 4 views
0

У меня есть строка, которая содержит некоторый url, как я могу найти все href с регулярным выражением?Найти все <a href>link</a> в строке с java regex

<a href="http://www.amazon.it/Die-10-Symphonien-Orchesterlieder-Sinfonie-Complete/dp/B003LQSHBO/ref=sr_1_2?ie=UTF8&qid=1440101590&sr=8-2&keywords=mahler">prodotto di prova</a> 

Теперь у меня есть это, которые находят все Амазонке ссылки Теперь мне нужно добавить также HREF к этому регулярному выражению:

String regex="(http|www\\.)(amazon|AMAZON)\\.(com|it|uk|fr|de)\\/(?:gp\\/product|gp\\/product\\/glance|[^\\/]+\\/dp|dp|[^\\/]+\\/product-reviews)\\/([^\\/]{10})"; 
+0

Что именно ожидается? – Shafizadeh

+0

Мне нужно регулярное выражение, которое принимает все href, которое содержит URL-адрес amazon. мое регулярное выражение работает, но я не знаю, как добавить ahref в regex. –

+0

Если вы нашли все ссылки amazon, то почему их нужно найти с помощью частей? Не можете ли вы добавить эту часть для уже полученных URL-адресов? –

ответ

0

Эта модель работает для меня в Java: (IDEONE here)

String input = "<a href=\"http://www.amazon.it/Die-10-Symphonien-Orchesterlieder-Sinfonie-Complete/dp/B003LQSHBO/ref=sr_1_2?ie=UTF8&qid=1440101590&sr=8-2&keywords=mahler\">prodotto di prova</a>\""; 
String pattern = "href=(?<link>['\\\"](?:https?:\\/\\/)?(?:www\\.)?(?:amazon|AMAZON)\\.(?:com|it|uk|fr|de)\\/(?<product>:gp\\/product|gp\\/product\\/glance|[^\\/]+\\/dp|dp|[^\\/]+\\/product-reviews)\\/(?<productID>[^\\/]{10})\\/(?<queryString>.*?)\\\")"; 

Pattern r = Pattern.compile(pattern); 
Matcher m = r.matcher(input); 

if (m.find()) { 
System.out.println("Amazon link: " + m.group(0)); 
System.out.println("product: " + m.group("product")); 
System.out.println("productID: " + m.group("productID")); 
System.out.println("querystring: " + m.group("queryString")); 
} else { 
System.out.println("NO MATCH"); 
} 

выход:

  • Amazon ссылка: HREF = "http://www.amazon.it/Die-10-Symphonien-Orchesterlieder-Sinfonie-Complete/dp/B003LQSHBO/ref=sr_1_2?ie=UTF8 & QID = 1440101590 & ср = 8 -2 & ключевые слова = Малер»

  • продукт: Die-10-Symphonien-Orchesterlieder-Sinfonie-Complete/дп

  • ProductID: B003LQSHBO

  • Строка запроса: исх = sr_1_2 т = UTF8 & qid = 1440101590 & sr = 8-2 & Ключевые слова = ma hler

Правила Java для обратных косых черт и побегов в строках совершенно бесительны для меня, и я никогда не ошибаюсь. Вам может быть полезно перейти к http://www.regexplanet.com/advanced/java/index.html и ввести регулярное выражение, которое оно преобразует в строку java с соответствующими экранами. (Я не мог получить свою работу до тех пор, пока не сделал это!)

+0

Как я могу сделать, если я хочу ссылку с href только на идентификатор продукта? –

+0

решил, что мне нужно взять группу 1 вместо группы 0 –

+0

если вы попробуете эту ссылку product не работает –

Смежные вопросы