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