是否可以构建一个regex
只匹配一个只列出一次唯一子串的字符串?例如,假设我想要一个列出一些不同颜色的正则表达式。如果我将其定义为:
'Here are a few different colors: (\w+), (\w+) and (\w+)'
然后,以下字符串将匹配:
'Here are a few different colors: red, green and red'
我的问题是,有没有办法强制使用颜色列表(\w+), (\w+) and (\w+)
来准确包含任何一种颜色?例如,
'Here are a few different colors: red, green and red' # No match because 'red' appears more than once
'Here are a few different colors: red, green and blue' # Match because all colors appear exactly once
答案 0 :(得分:3)
^(?!.*\b(\w+)\b.*\b\1\b)Here are a few different colors: (\w+), (\w+) and (\w+)$
试试这个。看看demo.A negative lookahead
将确保不再重复一个单词。
https://regex101.com/r/sJ9gM7/114#python
(?!.*\b(\w+)\b.*\b\1\b)
声明字符串中的任何位置都不应该有\b\w+\b
字,而字符串中的任何其他位置都会重复\b\1\b
。