python RE match对象 m.group(0)可以输出 m.group(1)为啥不可以输出第二个呢?

网友投稿 798 2022-09-09

python RE match对象 m.group(0)可以输出 m.group(1)为啥不可以输出第二个呢?

python RE match对象 m.group(0)可以输出 m.group(1)为啥不可以输出第二个呢?

import re match = re.search(r’[1-9]\d{5}’ ,‘BIT233189’) if match: … print(match.group(0)) … 233189

import re m = re.search(r’[1-9]\d{5}’, ‘bvcdh345678 jiki876989’) m.string ‘bvcdh345678 jiki876989’​​m.re​​ re.compile(’[1-9]\d{5}’)m.pos 0m.endpos 22

m.group(0) ‘345678’m.start(0) 5m.end(0) 11m.span(0) (5, 11)

m.group(0)可以输出 m.group(1)为啥不可以输出第二个呢?

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".

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:8086CPU简单介绍
下一篇:python局部变量和全局变量(6)(python里的全局变量)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~