Подтвердить что ты не робот

Регулярное выражение Android - строка с возвратом

В моем проекте Android у меня есть регулярное выражение и строка, в которой я должен иметь согласованное выражение. Проблема в том, что я нашел метод matches(), который возвращает boolean. Есть что-то, что возвращает только согласованную строку (например, если моя строка "идет в магазин в 12 часов", я хочу проверить, есть ли время в этой строке (в этом примере - "12pm" ), если это - вернуть его)? Спасибо заранее.

4b9b3361

Ответ 1

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

Pattern p = Pattern.compile(".*?(\\d{2}(am|pm)).*");
Matcher m = p.matcher("go to the shop at 12pm");
if(m.matches())
   return m.group(1);

Это вернет 12pm
На самом деле вы можете получить то, что хотите, с лучшим способом.

Pattern p = Pattern.compile("\\d{2}(am|pm)");
Matcher m = p.matcher("go to the shop at 12pm");
if(m.find())
   return m.group(0);    //or you can write return m.group(); result will be the same.