Подтвердить что ты не робот

Почему re.groups() не дает мне ничего для моей правильно подобранной группы?

Когда я запускаю этот код:

print re.search(r'1', '1').groups() 

Я получаю результат (). Однако .group(0) дает мне совпадение.

Не нужно groups() дать мне что-то, содержащее совпадение?

Обновление: Спасибо за ответы. Значит, если я делаю re.search() без подгрупп, я должен использовать groups(0) для получения соответствия?

4b9b3361

Ответ 1

Группы

пусты, так как у вас нет групп захвата - http://docs.python.org/library/re.html#re.MatchObject.groups. group (0) всегда возвращает весь текст, который был сопоставлен независимо от того, был ли он записан в группе или нет

Под ред.

Ответ 2

Насколько мне известно, .groups() возвращает кортеж запоминаемых групп. То есть те группы в регулярном выражении, которые заключены в круглые скобки. Поэтому, если вы должны написать:

print re.search(r'(1)', '1').groups()

вы получите

('1',)

как ваш ответ. В общем случае .groups() вернет кортеж всех групп объектов в регулярном выражении, заключенных в круглые скобки.

Ответ 4

В вашем регулярном выражении нет групп, поэтому вы получаете пустой список (()).

Попробуйте

re.search(r'(1)', '1').groups()

В скобках, которые вы создаете группу захвата, результат, соответствующий этой части шаблона, сохраняется в группе.

Затем вы получаете

('1',)

.