python - Python正则表达式中的groups()方法

标签 python regex

我正在学习 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组abc

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/

相关文章:

python - pandas groupby 聚合具有多列的自定义函数

python - pybluez 未检测到任何设备

python - 从 ubuntu shell 执行 python 脚本

regex - 紧跟在关键字之后选择单词

Java 正则表达式,小于和大于符号

java - 查询字符串的正则表达式模式

python - 从附近随机选择一个邮政编码来填写缺失的邮政编码

嵌套匹配的正则表达式

javascript - 忽略正则表达式中的数字

python - 将 tensorflow 检查点加载为 keras 模型