RegEx:从只有双换行正确的文本中删除换行符

时间:2013-10-17 22:08:16

标签: regex replace regular-language

我收到了一份用Microsoft Word编写的文本,我试图在一个名为Scrivener的小说编写程序中继续使用。这个程序似乎支持RegEx替换,我正在尝试让RegEx做一些清理工作。

Word已在文本中的每一行之后创建了换行符,如下所示:

  

Lorem ipsum dolor sit amet,(换行)

     

etiam liber sonet pro te,(换行)

     

labores maiestatis te ius,(换行)

     

(换行)

     

“cu has exercitmentit aitirian。” Ad vel probo eruditi delicatissimi。 (换行)

     

(换行)

     

Pro id harum admodum hendrerit,praesent maiestatis at sit。 (换行)

     

坐在munere latine virtute,ei vim brute populo,oblique nominavi no(换行)

     

NEC。 Quo et vituperata percipitur,sed sint putent adolescens in。(newline)

所以似乎实际上应该是换行符,有两个。所以我需要一个正则表达式,它可以匹配文本中的单个换行符,其中正确的换行符通常出现在两个换行符中。

我根本不确定如何做到这一点。有人能给我指路吗?

此致 约翰

1 个答案:

答案 0 :(得分:0)

我不知道Scrivener中正则表达式的支持是什么,但也许这个正则表达式可以提供帮助:

(?<!\r\n)\r\n(?!\r\n)

说明:

(?<!\r\n) # negative look behind for new line
  \r\n    # new line
(?!\r\n)  # negative look ahead for new line

它将匹配每个未跟随另一个新行并且不跟随新行的新行。

也许您需要使用\n代替\r\n

我用Notepad ++测试了这个输入:

Lorem ipsum dolor sit amet, 
etiam liber sonet pro te, 
labores maiestatis te ius, 

"cu has exerci mentitum apeirian." Ad vel probo eruditi delicatissimi. 

Pro id harum admodum hendrerit, praesent maiestatis at sit. 
At sit munere latine virtute, ei vim brute populo, oblique nominavi no 
nec. Quo et vituperata percipitur, sed sint putent adolescens in. 

替换功能与正则表达式选项一起使用:

Notepad++ Replace with Regex

更换后获得此结果:

Lorem ipsum dolor sit amet, etiam liber sonet pro te, labores maiestatis te ius, 

"cu has exerci mentitum apeirian." Ad vel probo eruditi delicatissimi. 

Pro id harum admodum hendrerit, praesent maiestatis at sit. At sit munere latine virtute, ei vim brute populo, oblique nominavi no nec. Quo et vituperata percipitur, sed sint putent adolescens in.