对于Python来说,学习正则就要学习模块re的使用方法。本文将展示一些大家都应该掌握的高级技巧。
编译正则对象
re.compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。用法上略有区别,举个例子, 匹配一个字符串可用如下方式:
如果使用compile,将变成:
为什么要这么用呢?其实就是为了提高正则匹配的速度,重复利用正则表达式对象。我们对比一下2种方式的效率:
可以看到第二种方式要快很多。在实际的工作中你会发现越多的使用编译好的正则表达式对象,效果就越好。
分组(group)
你可能已经见过对匹配的内容进行分组的用法了:
通过对要匹配的对象添加括号,就可以精确的对应符合的结果了。我们还可以进行嵌套的分组:
分组可以满足需求,但是有时候可读性很差,那可以对分组进行命名:
现在可读性就非常高了。
字符串匹配
学过sed的同学可能见过如下替换用法:
这个\1表示前面正则匹配到的结果。上面的sed也就是给匹配到的结果加上中括号。
在re模块中也存在这样的用法:
用命名分组也是可以的:
附近匹配(Look around)
re模块也支持附近匹配,看看例子就懂了:
正则匹配的时候使用函数
之前我们看到的大部分内容都是匹配的是一个表达式,但是有时候需求要复杂得多,尤其是在替换的时候。
举个例子,通过Slack的API能获取聊天记录,比如下面这句:
其中<@U1EAT8MG9>和<@U0K1MF23Z>是2个真实的用户,但是被Slack封装了,需要通过其他接口获取这个对应关系,
其结果类似这样:
在解析对应关系之后,还希望吧尖括号也去掉,替换后的结果是「@xiaoming, @laolin 嗯 确实是这样的 」
用正则怎么实现呢?
所以pattern当然也可以是一个函数
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 【原神】V5.0攻略 | 纳塔一一踞石山满探索收集
- 【原神】V5.0攻略 | 纳塔入门手册·燃素定量篇
- 战略游戏《盟军敢死队:起源》已于Steam上线试玩版
- 这几天,有多少玩家被魔性的“沙威玛”洗脑了?
- 英国9月游戏销量排行榜:《EA Sports FC 25》领跑
- 大侠立志传囚龙之地任务怎么做 任务图文攻略
- 新月同行碎银子技能介绍 六星绑定者碎银子
- 炉石传说T0天梯卡组推荐 2024最强卡组一览
- 英雄联盟世界赛2024门票多少钱 S14世界赛2024门票价格介绍
- lols14全球总决赛门票去哪买 s14世界赛2024门票购买方法
- dnf手游决斗场商店买什么好 决斗场商店高性价比物品购买推荐
- IGN评价《寂静岭2RE》:最痛苦却最成功的恐怖体验
- 西班牙全跨性别足球队首次亮相 将正式踢比赛
- 《怪猎荒野》新接待员超受欢迎 玩家:新老婆来了!
- 王钰《尘雾涅槃——王钰古筝独奏专辑》[320K/MP3][148.89MB]