Как написать регулярное выражение для использования в python для разделения абзацев?
Абзац определяется двумя переводами строки (\ n). Но можно иметь любое количество пробелов / табуляций вместе с переносами строк, и это все равно следует рассматривать как абзац.
Я использую Python, поэтому решение может использовать синтаксис регулярного выражения Python , который расширен. (можно использовать (?P...)
материал)
Примеры:
the_str = 'paragraph1\n\nparagraph2'
# splitting should yield ['paragraph1', 'paragraph2']
the_str = 'p1\n\t\np2\t\n\tstill p2\t \n \n\tp3'
# should yield ['p1', 'p2\t\n\tstill p2', 'p3']
the_str = 'p1\n\n\n\tp2'
# should yield ['p1', '\n\tp2']
Лучшее, с чем я могу прийти: r'[ \t\r\f\v]*\n[ \t\r\f\v]*\n[ \t\r\f\v]*'
, т.е.
import re
paragraphs = re.split(r'[ \t\r\f\v]*\n[ \t\r\f\v]*\n[ \t\r\f\v]*', the_str)
но это безобразно. Что-нибудь лучше?
EDIT
Предложения отклонены:
r'\s*?\n\s*?\n\s*?'
-> Это приведет к сбою примеров 2 и 3, поскольку \s
включает \n
, поэтому допускается разрывы абзацев с более чем 2 \n
с.