Ответ 1
Группыпусты, так как у вас нет групп захвата - http://docs.python.org/library/re.html#re.MatchObject.groups. group (0) всегда возвращает весь текст, который был сопоставлен независимо от того, был ли он записан в группе или нет
Под ред.
Когда я запускаю этот код:
print re.search(r'1', '1').groups()
Я получаю результат ()
. Однако .group(0)
дает мне совпадение.
Не нужно groups()
дать мне что-то, содержащее совпадение?
Обновление: Спасибо за ответы. Значит, если я делаю re.search()
без подгрупп, я должен использовать groups(0)
для получения соответствия?
пусты, так как у вас нет групп захвата - http://docs.python.org/library/re.html#re.MatchObject.groups. group (0) всегда возвращает весь текст, который был сопоставлен независимо от того, был ли он записан в группе или нет
Под ред.
Насколько мне известно, .groups()
возвращает кортеж запоминаемых групп. То есть те группы в регулярном выражении, которые заключены в круглые скобки. Поэтому, если вы должны написать:
print re.search(r'(1)', '1').groups()
вы получите
('1',)
как ваш ответ. В общем случае .groups()
вернет кортеж всех групп объектов в регулярном выражении, заключенных в круглые скобки.
Причина этого в том, что у вас нет групп захвата (поскольку вы не используете ()
в шаблоне).
http://docs.python.org/library/re.html#re.MatchObject.groups
И group(0)
возвращает весь результат поиска (даже если у него нет групп захвата вообще):
http://docs.python.org/library/re.html#re.MatchObject.group
В вашем регулярном выражении нет групп, поэтому вы получаете пустой список (()
).
Попробуйте
re.search(r'(1)', '1').groups()
В скобках, которые вы создаете группу захвата, результат, соответствующий этой части шаблона, сохраняется в группе.
Затем вы получаете
('1',)
.