【Python】正则表达式贪心和非贪心匹配

贪心和非贪心匹配

# 存在二义性时,贪心匹配默认匹配最长的字符串
greedyHaRegex = re.compile(r'(Ha){3,5}')
mo1 = greedyHaRegex.search('HaHaHaHaHa')
mo1.group()
>>> 'HaHaHaHaHa'

# 非贪心匹配默认匹配最短的字符串
nongreedyHaRegex = re.compile(r'(Ha){3,5}?')
mo2 = nongreedyHaRegex.search('HaHaHaHaHa')
mo2.group()
>>> 'HaHaHa'

findall()方法

Regexsearch()方法返回字符串第一次匹配的文本;
Regex对象的findall()方法返回被查找字符串的所有匹配;

如果正则表达式中有分组,那么findall()方法将返回元组的列表

python 中元组:tuple = ( ‘runoob’, 786 , 2.23, ‘john’, 70.2 )
列表:list = [ ‘runoob’, 786 , 2.23, ‘john’, 70.2 ]
字典:dict = {} dict[‘one’] = “This is one” dict[2] = “This is two”

phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d)-(\d\d\d\d)')
phoneNumRegex.findall('Cell:415-555-9999 Work:212-555-0000')
[('415', '555', '9999'), ('212', '555', '0000')]

字符分类

缩写字符分类表示
\w任何字母、数字或下划线(可以认为是匹配“单词”字符)
\w除字母、数字和下划线以外的任何字符
\s空格、制表符或换行符(可以认为是“空白”字符)
\S除空格、制表符和换行符以外的任何字符

建立自己的字符分类

  1. 字符分类[aeiouAEIOU]表示匹配所有的元音字符,不区分大小写;
  2. [^aeiouAEIOU]表示匹配所有的非元音;
  3. 方括号内,普通正则表达式符号不会被解意;

插入符号和美元符号

^插入字符表示匹配必须发生在被查找文本的开头;
'KaTeX parse error: Undefined control sequence: \d at position 27: …发生在被查找文本的结尾; `^\̲d̲+`表示从开头到结尾都是数字的字符串;

Reference:
Python编程快速上手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值