-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

好吧,显而易见的解决方案是在一个正则表达式中列举所有 15 种可能性——只需做一些工作,你就可以分解出一些术语并得到一个更紧凑的正则表达式——但不会有另一种方式来表达这些约束在正则表达式中。

于 2012-08-18T19:05:26.050 回答
0

“没有重复”意味着计数。正则表达式一般不能做到这一点,所以它是不适合这项工作的工具。

于 2012-08-18T20:46:55.027 回答