Python re模块中的group( )方法

imyu37

来自: imyu37(少冲动,多行动) 2011-09-19 17:29:57

×
加入小组后即可参加投票
  • babysoul

    babysoul 2011-09-19 20:02:47

    文档上的解释:
    http://docs.python.org/library/re.html#re.MatchObject

    If a group matches multiple times, only the last match is accessible:

    >>> m = re.match(r"(..)+", "a1b2c3") # Matches 3 times.
    >>> m.group(1) # Returns only the last match.
    'c3'

  • imyu37

    imyu37 (少冲动,多行动) 2011-09-19 20:37:13

    @BabySoul
    我就是不知道文档是什么意思?
    据我理解,m.group(1)应该返回‘a1’才是!
    继续求解~!~

  • [已注销]

    [已注销] 2011-09-19 20:40:27

    >>> m = re.match(r"(..)+", "a1b2c3")
    >>> m.groups()
    ('c3',)


    问题不在于group 而在于你的正则表达式

  • babysoul

    babysoul 2011-09-19 20:48:59

    "If a group matches multiple times, only the last match is accessible"

    a1b2c3中, c3是最后一个匹配到的,所以返回c3

  • G_will

    G_will (世上只有一种英雄主义...) 2011-09-20 00:46:02

    2011-09-19 20:37:13 YOng (少冲动,多行动)

    @BabySoul
    我就是不知道文档是什么意思?
    据我理解,m.group(1)应该返回‘a1’才是!
    继续求解~!~

    ====================

    如果正则是 r"(..)(..)(..)" 就是你说的这样。

  • Parker

    Parker (parking at home) 2011-09-20 03:20:11

    文档上的解释:
    http://docs.python.org/library/re.html#re.MatchObject

    If a group matches multiple times, only the last match is accessible:

    这个说的很清楚啊
    如果匹配多次,只有最后一个匹配可以访问

  • xhaii

    xhaii (晒母昂油) 2011-09-20 10:15:00

    一个括号多次匹配了,一个group对应一个括号不是匹配的次数

  • imyu37

    imyu37 (少冲动,多行动) 2011-09-20 12:27:00

    谢谢上面各位,我在《Python核心编程》第461页里看到了相关的解释。
    因为匹配一个子组(..),最后group()方法也只是返回一个子组,即便多次匹配,不过group()返回最后一个匹配的子组而已。

  • 欣蔚蓝

    欣蔚蓝 (读过的书,走过的路) 2015-09-03 00:44:01

    一个括号是一个group....这个group匹配了3次,一个group的每一次匹配覆盖上一次的匹配结果..

你的回应

回应请先 , 或 注册

90810 人聚集在这个小组
↑回顶部