1 2 3 4 5 6 7 8 9 10 11 12 13 | import re s = "2023-12-23 14:34:56|liming|20230789" parren = "(?P<time>^\d+-\d+-\d+\s\d+:\d+:\d+)\|(?P<name>[\w]+)\|(?P<number>\d+)$" g = re.search(parren,s) >>> g.groupdict() { 'time' : '2023-12-23 14:34:56' , 'name' : 'liming' , 'number' : '20230789' } >>> g.group( 'time' ) '2023-12-23 14:34:56' >>> g.group( 'name' ) 'liming' >>> g.group( 'number' ) '20230789' |
样例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | astr1 = 'AAbb aabb' astr2 = 'aabb aabb' astr3 = 'aabb ccbb' for s in astr1,astr2,astr3: result = re.match(r '(?i)(?P<pattern>[\w]+) (?P=pattern)' ,s) if result ! = None : print ( '{} match result is {}' . format (s,result.group())) else : print ( '{} match Nothing' . format (s)) #AAbb aabb match result is AAbb aabb #aabb aabb match result is aabb aabb #aabb ccbb match Nothing #可以看到(?P<pattern>)可以用来标记一些模糊的模式,然后在同一个正则表达式中,我们可以通过(?P=pattern)来复用之前的内容,这就是它们两个的用法区别,一个用于标记,一个用于在同一个正则表达式中复用,<br>特别提醒:同一个正则表达式 |
样例3
1 2 3 4 5 | astr = 'aabb aacc aadd' result = re.sub(r '(?i)aa(?P<pattern>[\w]+)' ,r 'bb\g<pattern>' ,astr) print ( '{} has been substituted to {}' . format (astr,result)) #aabb aacc aadd has been substituted to bbbb bbcc bbdd<br><br>#不同的表达式中复用 |
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!