#java #regex
#java #регулярное выражение
Вопрос:
Привет, я пытаюсь получить строку из URL.
Я использую регулярное выражение.
String url = "http://localhost/htc/android/htc-incredible/259164-gpid";
Pattern regex = Pattern.compile("^. /(\d )-gpid$");
Matcher tagmatch = regex.matcher( url );
System.out.println(tagmatch.group(0));
Ошибка:
Exception in thread "main" java.lang.IllegalStateException: No match found
Что я делаю неправильно:
Ответ №1:
Вам нужно использовать group(1)
(содержимое первой группы захвата), а не group(0)
(полное совпадение).
О, и, конечно, вам действительно нужно выполнить поиск:
tagmatch.find();
System.out.println(tagmatch.group(1));
Комментарии:
1. Обновлен вопрос с исключением.
2. Черт возьми, да! Вот чего мне не хватало. Спасибо @Tim. (Y)
Ответ №2:
Кроме того, вы можете использовать lastIndexOf
в сочетании с, split
чтобы получить нужную часть URL-адреса. Код будет выглядеть следующим образом
url.substring(url.lastIndexOf('/') 1).split("-")[0] //prints 259164
Ответ №3:
Вы могли бы попробовать это:
String url = "http://localhost/htc/android/htc-incredible/259164-gpid";
url.substring(url.indexOf('/',url.indexOf("htc-incredible/")) 1,url.indexOf("-gpid"));