python - 条件正则表达式

标签 python regex conditional-statements

我正在使用 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/

相关文章:

regex - 为什么 Perl 正则表达式挂起?

MySQL Select 基于条件选择

python - 我创建了一个程序,它有一个 TypeError :"' int' object has no attribute '__getitem__' "

regex - * 和 + 正则表达式的区别

javascript - 正则表达式 : can't find right expression

java - 为什么不满足这个条件?

c - 去掉程序中的 break 语句

python - Tcl错误: bad window path name (Python)

python - 将 BeautifulSoup 用于 2 因素身份验证背后的页面

python - virtualenv --no-site-packages 和 pip 仍在寻找全局包?