用正则表达式查找任何顺序的单词

时间:2015-08-01 00:28:06

标签: regex

考虑这些条目...

red yellow green
yellow green red
green red yellow 
other red yellow 
other green red

我可以按任意顺序(前3行)匹配红色,黄色,绿色:

^(^red|^yellow|^green) (red|yellow|green) (red$|yellow$|green$)$

请注意,我需要找到这些词,没有别的。 但是当我有更多的话时,表达式会增长很多。

e.g。 (有4个字)

^(^red|^yellow|^green|^black) (red|yellow|green|black) (red|yellow|green|black) (red$|yellow$|green$|black$)$

我的问题是:还有其他更简单的方法可以使用正则表达式吗?

1 个答案:

答案 0 :(得分:3)

如果你可以容忍red red yellow(好吧,我认为你的正则表达式可以匹配这样的行)那么你需要的正则表达式是

^(red|yellow|green)( (red|yellow|green))*$

您可以在那里测试:https://regex101.com/r/fC3pM3/1(它也有很好的解释)