我正在使用Python,我想使用正则表达式来检查某些内容是否属于“包含列表”,但“不是排除列表的一部分”.
我的包含列表由正则表达式表示,例如:
And.*
一切都以和开始.
排除列表也由正则表达式表示,例如:
(?!Andrea)
一切,但不是字符串Andrea.排除列表显然是否定的.
例如,使用上面的两个例子,我想匹配以And开头的所有内容,除了Andrea.
在一般情况下,我有一个includeRegEx和一个excludeRegEx.我想匹配匹配includeRegEx但不匹配excludeRegEx的所有内容.注意:excludeRegEx仍然是否定形式(正如你在上面的例子中看到的那样),所以最好说:如果某些东西匹配includeRegEx,我检查它是否也匹配excludeRegEx,如果匹配,则满足匹配.是否可以在单个正则表达式中表示它?
我认为条件正则表达式可能是解决方案,但我并不确定.
我想在Python中看到一个有用的例子.
非常感谢你.
解决方法:
为什么不把它们放在一个正则表达式中呢?
And(?!rea$).*
由于前瞻只是“向前看”而不消耗任何字符,所以这很好用(实际上,这是整个观察点).
所以,在Python中:
if re.match(r"And(?!rea$).*", subject):
# Successful match
# Note that re.match always anchor the match
# to the start of the string.
else:
# Match attempt failed
根据你问题的措辞,我不确定你是否从两个已经完成的“匹配/不匹配”对列表开始.在这种情况下,您可以通过连接正则表达式自动组合它们.这也很有效,但更加丑陋:
(?!Andrea$)And.*
一般来说,那么:
(?!excludeRegex$)includeRegex
标签:python,regex,conditional
来源: https://codeday.me/bug/20190705/1384717.html