Вы хотите эмулировать поиск NEAR с помощью регулярного выражения. Если вы не знакомы с этим термином, то в некоторых поисковых инструментах, использующих такие булевы операторы, как NOT и OR, также есть специальный оператор NEAR. Поиск «word1 NEAR word2» находит слова word1 и word2 в любом порядке, если они встречаются на определенном расстоянии друг от друга.
Если вы ищете только два разных слова, можно скомбинировать два регулярных выражения - одно, которое будет соответствовать слову 1 перед словом 2, и другое, которое изменит порядок слов. Следующее регулярное выражение позволяет разделить два искомых слова до пяти:
1 | \b(?:word1\W+(?:\w+\W+){0,5}?word2|word2\W+(?:\w+\W+){0,5}?word1)\b |
Параметры регекса: Без учета регистра
1 2 3 4 5 6 7 8 9 | \b(?: word1 # первый термин \W+ (?:\w+\W+){0,5}? # до пяти слов word2 # второй термин | # Или та же схема в обратном направлении... word2 # второй термин \W+ (?:\w+\W+){0,5}? # до пяти слов word1 # первый термин )\b |
Второе регулярное выражение здесь использует опцию свободного интервала и добавляет пробельные символы и комментарии для удобства чтения. Кроме того, эти два регулярных выражения идентичны.