当且仅当它包含给定列表中的两个不同单词时,我需要一个匹配字符串的正则表达式(在 Java 中) 。例如,如果单词列表是{blue,yellow,pink},那么字符串“blue and pink”和“yellow is the new blue”会匹配,但字符串“I like blue”不会匹配(只有一个单词从列表中出现),字符串“我的粉色衬衫太粉红色”也不会出现(它不包含两个或多个不同的词,但同一个词两次)。最接近我想要的正则表达式的是:(.(blue|yellow|pink).){2}此正则表达式将匹配包含列表中两个或多个单词的任何字符串,但即使这两个单词相同,它也会匹配(如“我的粉红色衬衫非常粉红色”示例中)。谢谢!!
3 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
捕获初始单词后,在匹配第二个颜色词交替之前,为第一个捕获组重复字符和负前瞻:
.*(blue|yellow|pink).*(?!\1)(blue|yellow|pink).*
https://regex101.com/r/OPo2bf/1
添加回答
举报
0/150
提交
取消