Как написать регулярное выражение для использования в python для разделения абзацев?регулярное выражение python для разделения абзацев
Абзац определяется двумя линиями (\ n). Но можно иметь любое количество пробелов/вкладок вместе с разрывами строк, и это все равно следует рассматривать как абзац.
Я использую python, поэтому решение может использовать расширение p. (Можно использовать (?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
с.
Существует. [^ \ S \ n] :) – 2009-03-05 12:21:29