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

Регулярные выражения Python - как захватить несколько групп из подстановочного выражения?

У меня есть регулярное выражение Python, которое содержит группу, которая может иметь нулевой или много раз, но когда я получаю список групп после этого, присутствует только последний. Пример:

re.search("(\w)*", "abcdefg").groups()

возвращает список ('g',)

Мне нужно, чтобы он возвращался ('a', 'b', 'c', 'd', 'e', ​​'f', 'g',)

Это возможно? Как мне это сделать?

4b9b3361

Ответ 1

В дополнение к Douglas Leeder solution, вот объяснение:

В регулярных выражениях количество групп фиксировано. Размещение квантора по группе не увеличивает количество групп (представьте, что все индексы других групп увеличиваются, потому что группа eralier соответствует более одного раза).

Группы с квантификаторами - это способ создания сложного подвыражения атома, когда необходимо сопоставить его более одного раза. Двигатель регулярных выражений не имеет другого способа, кроме сохранения последнего совпадения только с группой. Короче говоря: нет никакого способа добиться того, чего вы хотите, с единственным "безоружным" регулярным выражением, и вам нужно найти другой способ.

Ответ 2

re.findall(r"\w","abcdefg")