Поиск по нескольким словам в проекте



Задача. Найти в проекте все файлы, в которых есть слова employee и department (обязательно оба в любом порядке).



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



В RegEx можно по-разному обозначить подстроку, но только lookahead и lookbehind позволяют комбинировать условия без определённого порядка. Получается следующий паттерн:



^(?=.*\bemployee\b)(?=.*\bdepartment\b).*$




(?=) — positive lookahead, \b — граница слова, .* — любой символ.



Однако в таком виде в PhpStorm паттерн не сработает, потому что в интерпертации IDE . не включает символ новой строки. Поэтому заменяем . на [\s\S] (любой пробельный или непробельный символ) и получаем рабочий шаблон:



^(?=[\s\S]*\bemployee\b)(?=[\s\S]*\bdepartment\b)[\s\S]*$




Паттерн легко расширяется для поиска любого кол-ва слов.



Источники:

https://stackoverflow.com/a/4389683,

https://bit.ly/3LeMPa9.