python正则表达式拼接_python – 将几个正则表达式合并到一个RE中

你说“我知道它非常昂贵,因为我正在做一个特定的字符串匹配几次.”这对我来说,你正在运行每个RE几次.在这种情况下,您正在犯错误,无需编写更复杂的RE即可解决.

re1_matches = re.findall(re1,text)

re2_matches = re.findall(re2,text)

这将导致两个匹配列表.然后,您可以对这些列表执行布尔运算,以生成您需要的任何结果;或者如果您需要一个列表中的所有匹配,您可以连接它们.您也可以使用re.match(匹配在字符串的开头匹配)或re.search(匹配字符串中的任何位置),如果您不需要列表的结果,但只需要知道有匹配.

无论如何,在这种情况下创建一个更复杂的RE可能不是必需或不可取的.

但是,我并不清楚你想要什么,所以我可能错了.

关于如何使用布尔运算符来处理列表的一些建议.首先一些设置:

>>> re1 = r'(\d{1,3}[a-zA-Z]?)'

>>> re2 = r'(\babc\b)'

>>> re.findall(re1,text)

['100/64h','100h/100f']

>>> re.findall(re2,text)

['abc','abc']

>>> re1_matches = re.findall(re1,text)

>>> re2_matches = re.findall(re2,text)

>>> rex_nomatch = re.findall('conglomeration_of_sandwiches',text)

如果所有结果都为True,则返回第一个False结果或最终结果.

>>> not re1_matches and re2_matches

False

所以如果你想要列表而不是平面布尔值,你必须测试你想要的结果最后:

>>> not rex_nomatch and re1_matches

['100/64h','100h/100f']

同理:

>>> not rex_nomatch and re2_matches

['abc','abc']

如果你只想知道两个RE都产生了匹配,但是不再需要了,你可以这样做:

>>> re1_matches and re2_matches

['abc','abc']

最后,如果两个RE都产生匹配,这是一个紧凑的方法来获得连接:

>>> re1_matches and re2_matches and re1_matches + re2_matches

['100/64h','100h/100f','abc']

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值