Фон
У нас есть система, которая поддерживает хранилище регулярных выражений и проверяет некоторый входящий текст на соответствие этим регулярным выражениям для некоторых целей фильтрации. Одно из регулярных выражений, которое мы пытаемся построить, описано ниже. Решение, которое я ищу, основано на регулярных выражениях из-за производственных ограничений.
Задача
У меня есть список слов: word1, word2, word3, word4, word5, word6, word7, слово8, слово9, слово10. Я пытаюсь написать регулярное выражение, соответствующее строке, если оно содержит 4 или более этих слов, в любых позициях в любом порядке.
Примеры
- "Ab c word3 def word2 ghi word7 jkl word1 mno word5 "должно быть совпадением, поскольку в нем содержится более 4 слов из данного списка.
- " Ab c word2 def ghi word8 "не должно совпадать, поскольку в этом списке только 2 слова.
Текущее состояние
У меня есть следующее регулярное выражение, но, похоже, оно не выполняет то, что мне нужно.
((?i)((word1)|(word2)|(word3)|(word4)|(word5)|(word6)|(word7)|(word8)|(word9)|(word10))\b){4,}
Любые предложения, пожалуйста, в Java или Python записи?
Редактировать: Добавлена некоторая справочная информация.