Как сгруппировать регулярное выражение в функции re.split ()? - PullRequest
4 голосов
/ 29 января 2012

Посмотрите два примера того, как работает re.split ():

>>> re.split(',', 'a,b')
['a', 'b']

но

>>> re.split('(,)', 'a,b')
['a', ',', 'b']

Почему я получаю ',' в списке?Как этого избежать?

Я спрашиваю, потому что я хотел бы сделать разбиение, используя выражение, похожее на 'xy (a | b) cd'.

Ответы [ 2 ]

10 голосов
/ 29 января 2012

Используйте группу без захвата, например:

re.split('(?:,)', 'a,b')
1 голос
/ 29 января 2012

Это работает так, потому что это задокументировано, чтобы работать таким образом :

Если в pattern используются захватывающие скобки, то текст всех группв шаблоне также возвращаются как часть результирующего списка.

...