MongoDB 结果包括整个匹配的字符串,或组 0,以及组 1 和 2。
Python.groups()
方法仅返回捕获的组。该.group()
方法在没有参数的情况下也将返回组 0:
>>> re.search('([AB])([AB])', 'BA').groups()
('B', 'A')
>>> re.search('([AB])([AB])', 'BA').group()
'BA'
>>> re.search('([AB])([AB])', 'BA').group(1)
'B'
>>> re.search('([AB])([AB])', 'BA').group(2)
'A'
>>> re.search('([AB])([AB])', 'BA').group(0)
'BA'
这记录在re
模块文档中:
返回一个包含匹配的所有子组的元组,从 1 到模式中有多少组。
对于.group()
方法:
返回匹配的一个或多个子组。如果只有一个参数,则结果为单个字符串;如果有多个参数,则结果是一个元组,每个参数一个项目。如果没有参数,group1默认为零(返回整个匹配项)。
请注意,您的表达式中没有反向引用。相反,反向引用看起来像这样:
'([AB])\1'
其中\1
指的是它之前的捕获组。反向引用只会匹配被引用组匹配的完全相同的字符。
演示:
>>> re.search(r'([AB])\1', 'BA')
>>> re.search(r'([AB])\1', 'BB')
<_sre.SRE_Match object at 0x107098210>
注意 onlyBB
是如何匹配的,而不是 BA
.
您也可以使用命名组:
'(?P<a_or_b>[AB])(?P=a_or_b)'
a_or_b
组名在哪里。