美文网首页Python学习
Python | 关于正则表达式中()分组的一种理解

Python | 关于正则表达式中()分组的一种理解

作者: Quora文选 | 来源:发表于2019-02-24 15:07 被阅读0次

先看下案例:

phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))?              # area code         group1
    (\s|-|\.)?                      # separator
    (\d{3})                         # first 3 digits    group3
    (\s|-|\.)                       # separator
    (\d{4})                         # last 4 digits     group5
    (\s*(ext|x|ext.)\s*(\d{2,5}))?  # extension         group8
    )''', re.VERBOSE)

组1到组5很好理解,但是很多人可能不理解为什么会出现group(8)
下面来用一个案例解释:

>>> patt = '(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-((\d{2})-(\d{2}))?'

>>> re.match(patt, '11-22-33-44-55-66-77-88').group(1)
'11'
>>> re.match(patt, '11-22-33-44-55-66-77-88').group(5)
'55'
>>> re.match(patt, '11-22-33-44-55-66-77-88').group(6)
'66'
>>> re.match(patt, '11-22-33-44-55-66-77-88').group(7)
'77-88'
>>> re.match(patt, '11-22-33-44-55-66-77-88').group(8)
'77'
>>> re.match(patt, '11-22-33-44-55-66-77-88').group(9)
'88'
>>> re.match(patt, '11-22-33-44-55-66-77-88').group(10)
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
IndexError: no such group

注意:

  • group(7)是77-88
  • group(8)是77
  • group(9)是88
  • group(10)报错

计算分组的方式先按照最外面的小括号,再从小括号里面依次计算
再来一种更直观的理解:

>>> m = re.match('(a(b)(c))', 'abc')

>>> m.groups()
('abc', 'b', 'c')
>>> m.group(1)
'abc'
>>> m.group(2)
'b'
>>> m.group(3)
'c'

相关文章

  • Django的路由系统

    基本格式 分组命名匹配 在Python的正则表达式中,分组命名正则表达式组的语法是(?Ppattern...

  • Python | 关于正则表达式中()分组的一种理解

    先看下案例: 组1到组5很好理解,但是很多人可能不理解为什么会出现group(8)下面来用一个案例解释: 注意: ...

  • Python Re Group

    python group() 正则表达式中,group()用来提出分组截获的字符串,()用来分组 究其因 正则表达...

  • day 17 正则表达式

    1.什么是正则表达式 2.python对正则表达式的支持 匹配次数 分之和分组

  • python正则表达式详解

    #首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用法 环视用法...

  • day19-总结

    python中的正则表达式 正则表达式:用来做字符串查找,匹配,切割用的一种工具python对正则表达式的支持:提...

  • python --正则表达式-re模块

    所有关于正则表达式的操作都使用 python 标准库中的 re 模块。 Python中的re模块 re.compi...

  • python3中re正则表达式之我见

    什么是正则表达式?答:是一种通用的小型语言,不仅是python中所独有,只是python中更全面。正则表达式有什么...

  • 用了两年python的学长帮我整理出Python基础,还耐心的解

    先来说说列表吧,毕竟比正则表达式容易理解 列表也是一种数据类型,在Python中,列表是有序的。列表使用中括号来定...

  • 2019-04-10

    Python中的分组函数(groupby、itertools)

网友评论

    本文标题:Python | 关于正则表达式中()分组的一种理解

    本文链接:https://www.haomeiwen.com/subject/qjxbyqtx.html