re正则表达式中?P前缀

#正则 分组
'''
1. re.match,re.search,re.finditer 的返回值均为m=<re.Match object; span=(0, 1), match='她'>类型,
    若想获得匹配值的位置:m.span();
    若想获得匹配值的内容,m.group();
    特殊:re.finditer返回的为迭代器需要循环输出
2. re.sub返回替换后的内容
3. re.findall 返回匹配值的列表
4. ?P<value1>为组名,可根据组名定位匹配值的位置, 注意:是在.group()中的标记
'''
import re
def double(x):# 将匹配的数字乘以 2
    value = int(x.group('value'))
    return str(value * 2)
s = 'A23G4HFD567'
print(re.sub('(?P<value>\d+)', double, s))#A46G8HFD1134
print("="*30)

#group(0)
a = "123abc456"
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0))   #123abc456,返回整体
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1))   #123
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2))  #abc
print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3))   #456
print("="*30)

#贪婪匹配与非贪婪匹配
ret_greed= re.search(r'(?P<value1>\d+)(.+?)([a-z]*)(?P<value2>\d+)','12*%@abc45')
print('###贪婪:',ret_greed)
print('分组group(0):',ret_greed.group(0))#12*%@abc45
print('分组group(value1):',ret_greed.group('value1'))#12
print('分组group(1):',ret_greed.group(1))#12
print('分组group(2):',ret_greed.group(2))#*%@
print('分组group(3):',ret_greed.group(3))#abc
print('分组group(4):',ret_greed.group(4))#45
print('分组groupdict:',ret_greed.groupdict())#{'value1': '12', 'value2': '45'}


ret_no_greed= re.findall(r'a(\d+?)','a23b')# ['2']
print('###非贪婪:',ret_no_greed)
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值