У меня есть строка, которую я пытаюсь разбить на куски на пустых строках.Соответствующие пустые строки с регулярными выражениями
Учитывая строку s
, я думал, что я мог бы сделать это:
re.split('(?m)^\s*$', s)
Это работает в некоторых случаях:
>>> s = 'foo\nbar\n \nbaz'
>>> re.split('(?m)^\s*$', s)
['foo\nbar\n', '\nbaz']
Но это не работает, если линия полностью разряжен:
>>> s = 'foo\nbar\n\nbaz'
>>> re.split('(?m)^\s*$', s)
['foo\nbar\n\nbaz']
Что я делаю неправильно?
[python 2.5; нет разницы, если я компилирую '^\s*$'
с re.MULTILINE
и использую скомпилированное выражение вместо этого]
ли \ s там, потому что эти линии могут или не могут содержать пробельных символов? – anschauung
Можете ли вы показать некоторые входные данные и примеры вывода? – ghostdog74
Выглядит так, как будто это работает. Из http://docs.python.org/library/re.html: «split никогда не будет разбивать строку на пустую совпадение шаблона». Для рабочей версии см. Ответ Гленна Мейнарда ('\ n \ s * \ n'), но обратите внимание на его предупреждение об обработке нескольких пустых/пробельных строк. Вместо этого вы могли бы попытаться создать что-то вокруг re.finditer. –