2

我需要从一些文本中删除额外的换行符。我只需要保留句号/句点字符前面的换行符.

在下面的示例文本中,我只需要保留 2 个换行符:一个 after...arcu rhoncus.和一个 after ...ac in est.

Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur
ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis
semper ac in est.
Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique
vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur
ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id 
fringilla sem nunc vel mi.

我为此使用记事本++。

我可以将我想要保留的内容与以下内容相匹配,但我不确定如何制作整个解决方案。

[.]$
4

3 回答 3

3

就像在此评论中建议的那样,负面的后视效果很好。在 Notepad++ 中搜索此正则表达式并替换为单个空格:

(?<!\.)\s*\r\n\s*

如果你只有 have\n而不是\r\n那么只需删除\r.

请注意,使用\r?Notepad++ 时似乎匹配非贪婪,因此\r不会被删除。

Notepad++ v6.1.5 (UNICODE) 的结果:

Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.
Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi.
于 2013-03-20T14:43:26.603 回答
2

您需要使用负后视并用空格替换:

(?<!\.)\r\n

对于不知道此构造的人(或者如果不支持后视),另一种选择是首先将所有出现的 替换为\.\r\n不同的<rnt>字符串,然后删除所有换行符,然后再次替换<rnt>\.\r\n

于 2013-03-20T14:41:25.580 回答
2

这是一种非后视方法:

搜索:

([^.])(\r\n)+

并替换为:

\1 

where\1后面是一个空格。

请注意,+需要连续匹配多个换行符。否则,并非所有换行符都会匹配。

于 2013-03-20T14:44:21.293 回答