Метод 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.']