@amorphine

Как выбрать прямую ссылку из гугловского url с помощью регулярных выражений?

Необходимо из ссылок вида
https://www.google.com/url?rct=j&sa=t&url=http://t...
Получать ссылки вида:
tower43.ru/b0013232
С помощью сервиса написал регулярку
String pattern = "(\\S)(https?:[\\S]*)(&ct=ga&cd=)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(url);

При попытке извлечь вторую группу, получаю исключение IllegalStateException
На сайте группы распознаются нормально (хотя и \1 почему-то не работает)
3236c8f8bca44e86b4abb41b5ecb1c0a.png
Возможно, у меня изначально неправильный подход? Спасибо
  • Вопрос задан
  • 2492 просмотра
Решения вопроса 2
Комментировать
EugeneP2
@EugeneP2
Java Dev
Есть более простой вариант

String url = "https://www.google.com.ua/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjM6qWHxsrOAhXLNxQKHY9pBW8QFggaMAA&url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F2572566%2Fjava-jpa-version-annotation&usg=AFQjCNHo2lEs_AU2l38GU9-kO2hGaR5F9g&sig2=1TYjOkH85bUsfa7ddPgSsQ&bvm=bv.129759880,d.bGg";

		int beginIndex = url.indexOf("&url=") + 5;
		int endIndex = url.indexOf('&', beginIndex);
		String substring = url.substring(beginIndex, endIndex);

		System.out.println(substring);
		// http%3A%2F%2Fstackoverflow.com%2Fquestions%2F2572566%2Fjava-jpa-version-annotation

		System.out.println(URLDecoder.decode(substring, "utf8"));
		// http://stackoverflow.com/questions/2572566/java-jpa-version-annotation
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы