python 正则匹配 条件太多怎么办_python – 条件正则表达式

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值