-6

たとえば、これら 3 つの単語 [AB、CD、EF] の任意の組み合わせは、正規表現に合格する必要があります。また、重複を許可しないでください。

ありがとう。

4

3 に答える 3

1

これには正規表現はお勧めしません。しかし、それは可能です:

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.");
于 2012-08-18T19:10:59.817 に答える
0

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.

于 2012-08-18T19:05:26.050 に答える
0

「重複なし」とは、数えることを意味します。通常、正規表現はそれを行うことができないため、この仕事には不適切なツールです。

于 2012-08-18T20:46:55.027 に答える