我正在寻找一个匹配ALL OF的正则表达式,只有以下字符串boo
,foo
,tar
,boo,foo
,boo,tar
,foo,tar
,foo,boo
,tar,boo
,tar,foo
,boo,foo,tar
,boo,tar,foo
,tar,boo,foo
,tar,foo,boo
,{ {1}}和foo,boo,tar
。
(重复自己的字符串,例如foo,tar,boo
或boo,boo
并不好)
另外:我需要正则表达式本身只包含字符串boo,boo,tar
,boo
和foo
。
所以,回顾一下:我希望在匹配的字符串和regEx本身都不重复。
有什么方法可以达到这个结果吗?
这是我到目前为止tar
答案 0 :(得分:4)
试试这个正则表达式:
^(boo|foo|tar)(?!.*\1)(?:,(boo|foo|tar)(?!.*\2))*$
<强>解释强>
^
- 断言字符串的开头(boo|foo|tar)
- 匹配boo
或foo
或tar
并将其捕获为第1组(?!.*\1)
- 否定前瞻以确保第1组中存储的内容不会出现在字符串中的任何其他位置(?:,(boo|foo|tar)(?!.*\2))*
,(boo|foo|tar)
- 匹配,
后跟boo
或foo
或tar
并将其存储为第2组(?!.*\2)
- 否定前瞻以确保第2组中存储的内容不会出现在字符串中的任何其他位置*
- 匹配以上子序列0+次$
- 断言字符串的结尾替代正则表达式: