我正在学习 Python 中的正则表达式,但我在理解函数 groups()
时遇到问题。
>>> m = re.match("([abc])+", "abc")
这里我定义了类[abc],据我所知,它表示字符a 到c 中的任何一个。它是在一个组内定义的,+ 号表示我们至少需要一个这样的组。所以我执行以下行,结果是可以理解的:
>>> m.group()
'abc'
>>> m.group(0)
'abc'
我明白为什么会这样。主组的索引是 0,'abc' 匹配我们定义的类。到目前为止一切顺利,但我不明白为什么以下几行会按照它们的方式执行:
>>> m.group(1)
'c'
>>> m.groups()
('c',)
什么是group(1),我这里只定义了一个group,为什么groups函数里面只有字符'c'?它不应该返回一个包含所有组的元组吗?我想它至少会包含“abc”。
最佳答案
re
详情请咨询docs .在你的情况下:
group(0)
代表所有匹配的字符串,因此abc
,也就是3组a
,b
和 c
group(i)
代表第i组,并引用文档
If a group matches multiple times, only the last match is accessible
因此 group(1)
代表最后一场比赛,c
你的 +
被解释为组重复,如果你想在组内重复 [abc]
,将 +
移到括号中:
>>> re.match("([abc])", "abc").groups()
('a',)
>>> re.match("([abc]+)", "abc").groups()
('abc',)
关于python - Python正则表达式中的groups()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202365/