JavaRush/Java блог/Архив info.javarush/Регулярные выражения: найти слово/часть слова
eGarmin
41 уровень

Регулярные выражения: найти слово/часть слова

Статья из группы Архив info.javarush
участников
Если требуется найти слово или подстроку, хорошим решением будет использовать оператор контроля из инструментария регулярных выражений. Он незаменим в случаях, если вам требуется найти что-нибудь, следующее за чем-нибудь еще.
Простой пример
String str = "программируем"; Pattern p = Pattern.compile(".*программ(?=ируем).*"); Matcher m = p.matcher(str); if(m.matches()){ System.out.println("Нашел!"); }else{ System.out.println("Не нашел!"); }
1. Поиск спереди
В примере выше, если нужно найти "программируем", но не надо искать "программирую", следует использовать следующий паттерн: .*программ(?=ируем).* ?= – поиск спереди на наличие слова/части слова; ?! – поиск спереди на отсутствие слова/части слова.
2. Поиск сзади
Поиск сзади работает схожим образом. Нужно использовать ?<= для поиска на наличие слова/части слова сзади и ?.*(?<=программ)ируем.* Слово «программируем» соответствует данному шаблону, а слово «полируем» – нет.
Комментарии (4)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
maks1m
Уровень 25
26 июня 2014, 01:56
Капля в море из регулярных выражений :)
Вот если бы обширный мануал по регулярным выражениям написали — было бы круто :)
eGarmin
Уровень 41
26 июня 2014, 08:49
Да, я и начал переводить более крупную статью, но столкнулся с недопониманием кое-чего, поэтому стал разбираться с этими 2-мя короткими заметками, чтобы ту статью осознать. Еще не перевел, надеюсь, что доделаю. Я пока и не хотел вывешивать эти две на главной странице, пока ту не переведу. Они лишь дополнения к ней.
maks1m
Уровень 25
26 июня 2014, 14:15
Ну тогда ждемс! Потому как тема очень актуальна и востребована.
eGarmin
Уровень 41
21 июня 2014, 14:36
Это перевод статьи X Wang с сайта programcreek.com. Как мне кажется, в том виде в каком эта конструкция применяется в статье, она не особо полезна, т.к. можно просто написать .*программируем.* безо всякого выпендрежа. Зато может быть гораздо полезнее искать спереди/сзади на предмет отсутствия какого-нибудь окончания/приставки, при помощи вариантов ?! и ?<!