Regex 正则表达式查找匹配3个术语的任意组合

Regex 正则表达式查找匹配3个术语的任意组合,regex,Regex,我需要设计一个正则表达式,它将匹配n个单词的任何组合,没有重复 例如,单词“她”“是”“快乐”的正则表达式将匹配“她是快乐的”,“她是快乐的”,但不匹配“她是快乐的”或“她是快乐的” 我可以用正则表达式来做这件事吗?我应该使用自定义算法吗 这场比赛她很高兴但不重复单词: ^(?=(?:(?!\bshe\b).)*\bshe\b(?:(?!\bshe\b).)*$)(?=(?:(?!\bis\b).)*\bis\b(?:(?!\bis\b).)*$)(?=(?:(?!\bhappy\b).)*\b

我需要设计一个正则表达式,它将匹配n个单词的任何组合,没有重复

例如,单词
“她”
“是”“快乐”的正则表达式将匹配
“她是快乐的”
“她是快乐的”
,但不匹配
“她是快乐的”
“她是快乐的”


我可以用正则表达式来做这件事吗?我应该使用自定义算法吗

这场比赛
她很高兴
但不重复单词:

^(?=(?:(?!\bshe\b).)*\bshe\b(?:(?!\bshe\b).)*$)(?=(?:(?!\bis\b).)*\bis\b(?:(?!\bis\b).)*$)(?=(?:(?!\bhappy\b).)*\bhappy\b(?:(?!\bhappy\b).)*$).*$

让我们来解释第一部分(即
(?=(?:(?!\bshe\b)。*\bshe\b(?:(?!\bshe\b)。)*$)

这确保短语中有且只有一个“她”

(?=                     # start lookahead
    (?:                 # non capture group
        (?!\bshe\b)     # negative lookahead, make sure we don't have "she"
        .               # any character
    )*                  # end group, may appear 0 or more times
    \bshe\b             # literally "she" surounded by word boundaries
    (?:                 # non capture group
        (?!\bshe\b)     # negative lookahead, make sure we don't have "she"
        .               # any character
    )*                  # end group, may appear 0 or more times
    $
)

其他单词“is”和“happy”的解释是一样的。

是否必须用RegEx来完成?我也同意@WaiHaLee的观点,它只是获取输入文本的单词列表,并检查列表是否包含所有必需的术语,而不是。我只是觉得正则表达式引擎可能比我写的任何东西都更有效率。我的退路是自己做。