码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式之贪婪模式

时间:2019-12-07 01:08:26      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:bsp   正则表达式   多个   关闭   贪婪模式   match   print   字符串   ber   

首先需要明确一点,正则默认就是贪婪模式,何为贪婪模式? 就是在满足条件的前提下,尽可能多的进行匹配。

下面先来个例子

s =my tel number is 132-4567-1258
r = re.match(r(.+)(\d+-\d+-\d+),s)
print(r.groups())  # (‘my tel number is 13‘, ‘2-4567-1258‘)
‘‘‘
结查分析:
    .+ : 表示任意字符匹配一次或者多次

    \d+-\d+-\d+  : 1个数字或者多个数字,然后横线 , 然后1个数字或者多个数字,然后横线 ,然后1个数字或者多个数字

    因为正则是贪婪的,所以在满意第2个分组的前提下(给你1个数字吧),  .+ 会尽可能多的匹配字符串,
    所以就出现了(‘my tel number is 13‘, ‘2-4567-1258‘)这个结果。

‘‘‘


"""
    关闭贪婪
"""

s =my tel number is 132-4567-1258
r = re.match(r(.+?)(\d+-\d+-\d+),s)
print(r.groups())  # (‘my tel number is ‘, ‘132-4567-1258‘)

‘‘‘
注意:? 只是关闭了.+的贪婪模式, 尽可能少的匹配,
      \d+-\d+-\d+  还是贪婪的
‘‘‘

 

In [20]: re.match(raa(\d+)bb,aa1234bb).group(1)
Out[20]: 1234

In [21]: re.match(raa(\d+?)bb,aa1234bb).group(1)
Out[21]: 1234

In [22]: re.match(raa(\d+?),aa1234bb).group(1)
Out[22]: 1

 

 

 

正则表达式之贪婪模式

标签:bsp   正则表达式   多个   关闭   贪婪模式   match   print   字符串   ber   

原文地址:https://www.cnblogs.com/z-qinfeng/p/12000183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!