随笔- 310  文章- 1  评论- 0  阅读- 85824 
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>#不同的表达式中复用

  

 

 

 posted on   boye169  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示