Я узнаю о регулярном выражении в Python, и у меня проблемы с пониманием функции groups()
.Метод groups() в регулярных выражениях в Python
>>> m = re.match("([abc])+", "abc")
Здесь я определил класс [ABC], который, как я знаю, означает любой из символов от а до с. Он определен внутри группы, а знак + означает, что мы хотим, по крайней мере, одну из таких групп. Поэтому я выполняю следующую строку, и результат понятен:
>>> m.group()
'abc'
>>> m.group(0)
'abc'
Я понимаю, почему это происходит. Индекс основной группы равен 0, а «abc» соответствует классу, который мы определили. До сих пор так хорошо, но я не понимаю, почему следующие строки получить выполняются так, как они это делают:
>>> m.group(1)
'c'
>>> m.groups()
('c',)
Что группа (1), я только определить одну группу здесь и почему функция группы имеет только символ 'c' в нем? Разве не предполагается возвращать кортеж, содержащий все группы? Я бы предположил, что он по крайней мере будет содержать «abc».
Если это так, то почему в этом примере группы () сохраняет все группы в кортеже: '>>> p = re.compile ('(a (b) c) d')' '>>> m = p.match ('abcd') ' ' >>> m.group (2,1,2) ' ' ('b', 'abc', 'b') ' – Omid
В этом примере создаются две разные группы, которые отличаются от одной группы, совпадающей несколько раз с' + 'или' * 'повторение. –