有没有办法构建一个正则列出一个特定子串的正则表达式?

时间:2015-04-16 12:12:20

标签: python regex python-2.7

是否可以构建一个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

1 个答案:

答案 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