たとえば、これら 3 つの単語 [AB、CD、EF] の任意の組み合わせは、正規表現に合格する必要があります。また、重複を許可しないでください。
ありがとう。
これには正規表現はお勧めしません。しかし、それは可能です:
boolean foundMatch = subjectString.matches(
"(?x) # Verbose regex:\n" +
"(?!.*(AB|CD|EF).*\\1) # Make sure there are no dupes in the string\n" +
"\\s* # Match optional whitespace.\n" +
"(?:AB|CD|EF) # Match one of the three candidates\n" +
"(?: # Try to match...\n" +
" \\s*,\\s* # a comma, optionally surrounded by whitespace\n" +
" (?:AB|CD|EF) # followed by one of the candidates\n" +
")* # zero or more times\n" +
"\\s* # Match optional whitespace.");
Well, the obvious solution is just to enumerate all 15 possibilities in a regex -- with a little work, you can probably factor out some terms and get a slightly more compact regex -- but there's not going to be another way to express those constraints in a regular expression.
「重複なし」とは、数えることを意味します。通常、正規表現はそれを行うことができないため、この仕事には不適切なツールです。