2016-04-06 2 views
0

Этот поиск нормально:Python регулярное выражение п вопрос

>>> 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') 

ответ

3

Необходимо указать флаг 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') 
+0

Спасибо! Да '.' Не соответствует '\ n' по умолчанию – user3479125

Смежные вопросы