Python 用Regex-edge-case问题检测段落中断
我有一个很长的文本字符串,其中新行的格式很差。我想删除所有换行符,除非换行符跟在Python 用Regex-edge-case问题检测段落中断,python,regex,Python,Regex,我有一个很长的文本字符串,其中新行的格式很差。我想删除所有换行符,除非换行符跟在,?,后面,:char(表示句子的结尾)。我也不想删除换行符,如果它后面紧跟着一个数字或另一个换行符-这将表明一章结束。我正在为正则表达式使用pythonre 这是到目前为止我的正则表达式(?) 带有7个单元测试用例的正则表达式示例: 我的测试在以下示例中失败: First paragraph. <-- note a trailing space(s) after the period Second para
,?
,后面
,:
char(表示句子的结尾)。我也不想删除换行符,如果它后面紧跟着一个数字或另一个换行符-这将表明一章结束。我正在为正则表达式使用pythonre
这是到目前为止我的正则表达式(?)
带有7个单元测试用例的正则表达式示例:
我的测试在以下示例中失败:
First paragraph. <-- note a trailing space(s) after the period
Second paragraph
第一段。通过对上述文本的研究,我们可以得出结论,实际的错误格式是由于存在大量空格造成的。
因此,可以通过用一个空格\1\2
将单词/字母之间间隔的每一块([a-zA-Z])\s+([a-zA-Z])
进行处理
re.sub(r'([a-zA-Z])\s+([a-zA-Z])','\1 \2',Text)
根据以下链接:
最后,将结果复制并粘贴到word文档中,以确保其可接受或不可接受。一个选项是在匹配?
:
或换行后,使用[^\S\r\n]*
在查找后匹配可选的空白字符,而不使用换行符
您可以使用替换的|
将其缩短为使用列出所有字符的列表
(?<![?.:\n\r][^\S\r\n]*)\r?\n(?![\d\r\n])
(?
(以JavaScript引擎为例)是否有必要一步用一个正则表达式解决所有问题?此正则表达式将删除文档中除少数重要换行符之外的所有换行符。这些换行符消失后,我无法返回并重新插入。因此必须一步完成。您可以尝试((?您提供的文本中没有第一段。
。此外,根据您概述的规则,模式只是\n(?![.?!:\d\n\r])
。这适用于regex包!通常从现在起将使用regex而不是re