あなたができることは、次のような正規表現を作成することです。
(?i)\b(aaaa|bbbb|cccc)(?=\W+(\w+)\W+(\w+)\b)
\__/ \_____________/ \______/ \__ makes sure it's a complete word
| | \____ repeat N-1 times (N = number of words)
| \___ all words alternated to match the first word
\__ case insensitive matching
次に、Javaを使用して、キャプチャグループにすべての単語が含まれていることを確認します。一致するものが見つかった場合は、一致しなかった場合は、次の一致を検索して繰り返します。
これは正規表現だけで解決することができますが、適切な式を作成する必要があります。
(?i)\b(words)\W+(?!\1\b)(words)\W+(?!(?:\1|\2)\b)(words)\b
\___/ \________________/ \_____________/
| | |
list of all the | lookahead has to include
words alternated | all previous capturing groups
|
repeat N-1 times but you have to
change the lookahead each time
これは多くの単語にとってかなり大きな表現になりますが、words
許可されているすべての単語に一致する任意の表現にすることもできます(交互である必要はありません)。