我正在使用 Python,我想使用正则表达式来检查某些内容是否“是包含列表的一部分”但“不是排除列表的一部分”。
我的包含列表由正则表达式表示,例如:
And.*
以 And 开头的所有内容。
此外,排除列表 由正则表达式表示,例如:
(?!Andrea)
一切,但不是字符串 Andrea。 排除列表显然是一个否定。
例如,使用上面的两个示例,我想匹配所有以 And 开头的内容,但 Andrea 除外。
在一般情况下,我有一个includeRegEx 和一个excludeRegEx。我想匹配匹配 includeRegEx 但不匹配 excludeRegEx 的所有内容。 注意:excludeRegEx 仍然是否定形式(如您在上面的示例中所见),所以最好说:if something matches 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 - 条件正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738349/