MongoDB результат включает в себя всю строку соответствие с или группу 0, а также группы 1 и 2.
питон .groups()
метод возвращает только захваченные группы. Способ .group()
бы, без аргументов, возвращение группы-тоже:
>>> 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'
Это documented in the re
module documentation:
Возвращает кортеж, содержащий все подгруппы в матче, от 1 до однако многих групп в шаблоне.
и для метода .group()
:
Возвращает одну или несколько подгрупп матча. Если есть один аргумент, результатом будет одиночная строка; если есть несколько аргументов, результатом является кортеж с одним элементом для каждого аргумента. Без аргументов group1 по умолчанию равен нулю (возвращается весь матч).
Обратите внимание, что в вашем выражении нет обратных ссылок. Дублирующий ссылка будет выглядеть следующим образом, вместо:
'([AB])\1'
где \1
относится к группе захвата непосредственно перед ним. Обратная ссылка будет соответствовать только тем же символам, что и соответствующая группа.
Демо:
>>> re.search(r'([AB])\1', 'BA')
>>> re.search(r'([AB])\1', 'BB')
<_sre.SRE_Match object at 0x107098210>
Обратите внимание, как только BB
подобран, неBA
.
Вы можете использовать именованные группы тоже:
'(?P<a_or_b>[AB])(?P=a_or_b)'
где a_or_b
это название группы.
Пожалуйста, разместите текст, а не изображения. –
Кроме того, нет обратного вызова. –