Страницы

Поиск по вопросам

вторник, 11 июня 2019 г.

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

Есть регулярное выражение ^(\d{4,7})$ Оно валидно для поиска строки вида 123456, на данную строку оно реагирует положительно. Но как модифицировать данную регулярку, чтобы найти подобную подстроку 123456 в строке вида:
Вася сегодня съел 123456 яблок
Я пытался добавить * в конце регулярки, но не помогло. Подскажите, что не так, в регулярках не силён, словарик не помог. Всем заранее спасибо.


Ответ

Используйте границу слова
String regex = "\\b\\d{4,7}\\b";
Или блоки предварительного просмотра вперёд/назад:
String regex = "(?Если шаблон \b стоит перед \d, то перед цифрой не должно быть буквы, цифры или знака подчёркивания. Если шаблон \b стоит после \d, то после цифры не должно быть буквы, цифры или знака подчёркивания.
Блок предварительного просмотра назад (?Демо-код на Java
String s = "Вася сегодня съел 123456 яблок"; String regex = "\\b\\d{4,7}\\b"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(s); while (matcher.find()){ System.out.println(matcher.group(0)); } // => 123456

Комментариев нет:

Отправить комментарий