python中关于正则表达式的补充

正则表达式的转义

1.如果使用正则表达式匹配特殊字符就需要加 ’ \ ’ 表示转义
特殊符号: . * + ? ^ $ [] () {} | \

e.g. 匹配特殊字符'.'时使用'\.'表示本身含义
>>> re.findall('-?\d+\.?\d*','123,-123,1.23,-1.23')
['123', '-123', '1.23', '-1.23']

2.在编程语言中,常常使用原生字符串(任何字符都是它本身的含义.没有转义的可能)书写正则表达式避免多重转义的麻烦

'\\$\\d+' 解析为 '\$\d+' 匹配 '$100'
'\\$\\d+' 等同于 r'\$\d+'

贪婪与非贪婪模式

1.贪婪模式 : 一般情况下,匹配重复的元字符总是尽可能多的向后匹配内容,比如:* + ? {m,n}

e.g. 匹配12,2可以出现0次或多次,他就会尽可能多的匹配2,这就是贪婪模式
>>> re.findall('12*','122222222223')
['12222222222']

2.非贪婪模式 : 一般情况下,匹配重复的元字符总是尽可能多的向后匹配内容

  • 在匹配重复元字符后面加 ’ ? ’ 符号即可
e.g. 匹配12,2可以出现0次或多次,他就会尽可能少的匹配2,这就是非贪婪模式,也叫懒惰模式
>>> re.findall('12*?','122222222223')
['1']

正则表达式分组

  1. 定义:在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象
  2. 作用:可以被作为整体操作,改变元字符的操作对象
>>> re.search(r'ab*','ababababab').group()
'ab'
>>> re.search(r'(ab)*','ababababab').group()
'ababababab'

  • 可以通过编程语言某些接口获取匹配内容中,子组对应的内容部分
>>> re.search(r'(http|https)://\S+','http://www.baidu.com').group()
'http://www.baidu.com'
>>> re.search(r'(http|https)://\S+','http://www.baidu.com').group(1)
'http'

3.注意事项:

  • 一个正则表达式中可以包含多个子组
  • 子组可以嵌套,但是不要重叠或者嵌套结构复杂
  • 子组序列号一般从外到内,从左到右计数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值