Сообщить об ошибке.

Разделить строку по совпадениям регулярного выражения

Метод Pattern.split() разбивает строку на части везде, где есть совпадения с регулярным выражением, указанным в качестве разделителя и возвращает список частей строки. Он похож на метод str.split() для строк, но обеспечивает гораздо большую гибкость в составлении разделителей. Метод str.split() поддерживает только разделение пробелами или фиксированной строкой.

Pattern.split(string [, maxsplit=0])

Метод Pattern.split() делит строку string по соответствиям регулярного выражения. Если в регулярном выражении используются захватывающие скобки, то их содержимое также будет возвращено как часть результирующего списка. Можно ограничить количество выполненных разбиений, передав значение maxsplit. Если maxsplit не равен нулю, то выполняется не более maxsplit делений, а оставшаяся часть строки будет возвращена в качестве последнего элемента списка. В следующем примере разделителем является любая последовательность не буквенно-цифровых символов.

>>> p = re.compile(r'\W+')
>>> p.split('This is a test, short and sweet, of split().')
# ['This', 'is', 'a', 'test', 'short', 'and', 'sweet', 'of', 'split', '']
>>> p.split('This is a test, short and sweet, of split().', 3)
# ['This', 'is', 'a', 'test, short and sweet, of split().']

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

>>> p = re.compile(r'\W+')
>>> p2 = re.compile(r'(\W+)')
>>> p.split('This... is a test.')
# ['This', 'is', 'a', 'test', '']
>>> p2.split('This... is a test.')
# ['This', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']

Функция re.split() уровня модуля re получает строку регулярного выражения в качестве первого аргумента, но в остальном она такая же.

>>> re.split('[\W]+', 'Words, words, words.')
# ['Words', 'words', 'words', '']
>>> re.split('([\W]+)', 'Words, words, words.')
# ['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split('[\W]+', 'Words, words, words.', 1)
# ['Words', 'words, words.']