• 在python中使用正则表达式(三)


    这里主要说一下贪婪匹配和非贪婪匹配

     贪婪匹配:匹配尽可能多的字符;  非贪婪匹配:匹配尽可能少的字符

    python的正则匹配默认是贪婪匹配

    例子:

    >>> re.match(r'^(w+)(d*)$','abc123').groups()
    ('abc123', '')
    >>> re.match(r'^(w+?)(d*)$','abc123').groups()
    ('abc', '123')

    表达式1:
    w+表示匹配字母或数字或下划线或汉字并重复1次或更多次;d*表示匹配数字并重复0次或更多次。
    分组1中(w)是贪婪匹配,它会在满足分组2(d*)的情况下匹配尽可能多的字符(有点拗口),
    因为分组2(d*)匹配0个数字也满足,所以分组1就把所有字符全部匹配掉了,分组2只能匹配空了。

    表达式2:在表达式后加个?即可进行非贪婪匹配,如上面的(w+?),
    因为分组1进行非贪婪匹配,也就是满足分组2匹配的情况下,分组1尽可能少的匹配,
    这样的话,上面分组2(d*)会把所有数字(123)都匹配,所以分组1匹配到(abc)

  • 相关阅读:
    面向对象进阶
    20191011作业
    2019.10.10作业
    类的继承
    面向对象
    2019.10.09作业
    pandas模块
    [BZOJ 2190][SDOI2008]仪仗队(欧拉函数)
    [BZOJ 2729][HNOI2012]排队(组合数学+高精)
    [BZOJ 1491][NOI2007]社交网络(Floyd)
  • 原文地址:https://www.cnblogs.com/hanmk/p/9188357.html
Copyright © 2020-2023  润新知