python 正则表达式 groups和group有什么区别?

m=re.match("([abc])+","abc")printm.groups()返回的只有('c',)而不是abc而printm.group()就能返回整个的字符串... m = re.match("([abc])+", "abc")
print m.groups()
返回的只有('c',) 而不是 abc
而 print m.group() 就能返回整个的字符串
他们到底有什么区别呢 网上的解释我看的不是太明白
展开
 我来答
蚂蚁爱吐槽
高粉答主

2018-01-05 · 说的都是干货,快来关注
知道大有可为答主
回答量:463
采纳率:100%
帮助的人:43.2万
展开全部

group和groups是两个不同的函数。

一般,m.group(N) 返回第N组括号匹配的字符。
而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的。

m.groups() 返回所有括号匹配的字符,以tuple格式。
m.groups() == (m.group(0), m.group(1), ...)

正则表达式中,group()用来提取分组截获的字符串,()用来分组。

组是通过 "(" 和 ")" 元字符来标识的。 "(" 和 ")" 有很多在数学表达式中相同的意思;它们一起把在它们里面的表达式组成一组。举个例子,你可以用重复限制符,象 *, +, ?, 和 {m,n},来重复组里的内容,比如说(ab)* 将匹配零或更多个重复的 "ab"。

如果不引入括号,整个个表达式作为一个组,是group(0)



对于题目中的例子:

m = re.match("([abc])+", "abc")
+号在括号外面。括号最多匹配到一个字符,要么是a, 要么是c,这个python引擎匹配的是末尾的c。
而m.group() == m.group(0) 这个返回的是整个匹配的字符串"abc".

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式