Python регулярное выражение \n проблема

Это искал нормально:

>>> re.search(r'(.*?)\r\n(.+?)\r\n', 'aaa\r\r\nbbb\r\n').groups()
('aaa\r', 'bbb')

Но когда я заменяю один из трех b в \n это не искал:

>>> re.search(r'(.*?)\r\n(.+?)\r\n', 'aaa\r\r\nb\nc\r\n').groups()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'

Но я хочу разобрать во втором случае:

('aaa\r', 'b\nc')

1 ответ

Решение

Вам нужен флаг DOTALL:

import re
re.search(r'(.*?)\r\n(.+?)\r\n', 'aaa\r\r\nb\nc\r\n', flags=re.DOTALL).groups()

результат:

('aaa\r', 'b\nc')
Другие вопросы по тегам