小编典典

为什么正则表达式的“非捕获”组不起作用?

python

在下面的代码段中,匹配结果中的 非捕获组"(?:aaa)"应被忽略,

结果应该是"_bbb"

但是,我得到"aaa_bbb"了匹配结果。仅当我指定group(2)时才显示"_bbb"

>>> import re
>>> s = "aaa_bbb"
>>> print(re.match(r"(?:aaa)(_bbb)", s).group())

aaa_bbb

阅读 190

收藏
2020-12-20

共1个答案

小编典典

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())

2020-12-20