Python寻找对应的括号对

当有一串字符,例如to_num((...),(...)) ...需要匹配到完整的to_num((...),(...))时,使用普通的正则匹配

import re
str='to_num((),()) .....\n ((),)'
pattern=re.compile(r'to_num\(.*?(?=\))',flags=re.IGNORECASE)
for i in re.findall(pattern,str):
    print(i)

得到的结果为to_num((

显然不是我们想要的to_num((),())

因此,我们可以定义一个函数find_bracket(str),str为目标字符串,函数返回完整的括号对

# 完整的括号对
def find_bracket(str):
    lt=rt=0
    start=finish=False
    x=''
    for i in str:
        start=True
        if i=='(':
            lt=lt+1
        if i==')':
            rt=rt+1
        if lt==rt!=0:
            finish=True
        if start and not finish:
            x=x+i
        if finish:
            x=x+')'
            break
    return x

这时我们更改一下正则匹配规则

import re 

str='to_num((),()) .....\n ((),)'
pattern=re.compile(r'to_num\(.*?(?=\n)',flags=re.IGNORECASE)
for i in re.findall(pattern,str):
    print(find_bracket(i))

此时控制台输出为  to_num((),())

这样就完成了对括号对的完整匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昭野_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值