在下面的代码段中,匹配结果中的 非捕获组"(?:aaa)"应被忽略,
"(?:aaa)"
结果应该是"_bbb"。
"_bbb"
但是,我得到"aaa_bbb"了匹配结果。仅当我指定group(2)时才显示"_bbb"。
"aaa_bbb"
>>> import re >>> s = "aaa_bbb" >>> print(re.match(r"(?:aaa)(_bbb)", s).group()) aaa_bbb
group()并group(0)返回整个比赛。随后的组是实际的捕获组。
group()
group(0)
>>> print (re.match(r"(?:aaa)(_bbb)", string1).group(0)) aaa_bbb >>> print (re.match(r"(?:aaa)(_bbb)", string1).group(1)) _bbb >>> print (re.match(r"(?:aaa)(_bbb)", string1).group(2)) Traceback (most recent call last): File "<stdin>", line 1, in ? IndexError: no such group
如果您想要相同的行为group():
" ".join(re.match(r"(?:aaa)(_bbb)", string1).groups())