Java: получение целочисленного значения из URL

#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"));