如何编写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)
但那太丑了,有更好的方法吗?
被拒绝的建议:
r'\s*?\n\s*?\n\s*?'
-> 这会导致例子2和3失败,因为\s
包括\n
,所以它将允许带有超过2个\n
的段落换行。
str_isspace
是什么? - Brian M. Hunt