使用正则表达式处理一个字符串

写一个文件读取修改的脚本,遇到字符串查找匹配和修改的问题。匹配过程中,多次都匹配不上,这里记录下解决过程。

从文件中读取到一个如下字符串:
在这里插入图片描述
想分别获取:

./test\rknn_transform_tiny.py
19
rknn.load_darknet(model='./cfgs/cfg.cfg',weight="./models/model.weights")

匹配方法一 :

后来觉得[]符号不好匹配,后来把字符串改成如下格式再进行匹配:
在这里插入图片描述
代码如下:

search_result='./test\rknn_transform_tiny.py19:    rknn.load_darknet(model=\'./cfgs/cfg.cfg\',weight="./models/model.weights")'

nameRegex = re.compile(r'(.*).py(.*):(.*)',re.DOTALL) 

mo=nameRegex.search(search_result)
print(mo2.group(1))
print(mo2.group(2))
print(mo2.group(3))

输出结果如下:
在这里插入图片描述

匹配方法二 :

现在知道怎么匹配[]符号:[]符号需要转义

代码如下:

search_result='[./test\rknn_transform_tiny.py][19]:    rknn.load_darknet(model=\'./cfgs/cfg.cfg\',weight="./models/model.weights")'

nameRegex = re.compile(r'\[(.*)\]\[(.*)\]:(.*)',re.DOTALL) 

mo=nameRegex.search(search_result)
print(mo2.group(1))
print(mo2.group(2))
print(mo2.group(3))

输出结果如下:
在这里插入图片描述

正则表达式匹配字符串——问题总结

在这里插入图片描述
就上面这个字符串来说,匹配时要注意的几点如下:

① python中[]符号是特殊符号,[]放在字符串中需要转义。
一开始写的是:

nameRegex = re.compile(r'[(.*)][(.*)]:(.*)') 

匹配的结果始终是None

修改成如下后可以匹配到了:

nameRegex = re.compile(r'\[(.*)\]\[(.*)\]:(.*)') 

②这个字符串中包含了空格和换行符,想要将换行符也匹配到的话,需要为re.compile()传入re.DOTALL作为第二个参数

这是因为【 .*】匹配的是除换行符外的所有字符

nameRegex = re.compile(r'\[(.*)\]\[(.*)\]:(.*)',re.DOTALL) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值