如果字体中没有空格,则删除所有断行CRLF

时间:2016-01-06 18:08:27

标签: regex notepad++

我有这样的文字:

Today is Monday  
Tomorrow is Tuesday
Sunday was beautiful,
and sunshine  
Goodbye.

您可以看到空格(表示为。)和断裂线(表示为CRLF),如下图所示:

enter image description here

我想这样做:

  • 如果CRLF(断裂线)前面有空格则不做任何事(保留CRLF)
  • 否则,如果CRLF(断裂线)前面没有空格,则删除CRLF(将2行连接到1)

所以我想要完成的结果如下:

Today is Monday  
Tomorrow is TuesdaySunday was beautiful,and sunshine  
Goodbye.

enter image description here

我尝试了这个正则表达式:^[^\r\n]*\r\n并将其替换为什么,但它不起作用,它删除了所有内容。

对此有什么好的正则表达式?

2 个答案:

答案 0 :(得分:3)

您可以替换任何不是空格的字符,后跟具有该字符的CRLF。因此,请搜索([^ ])\r\n并替换为\1。但这可能会错误地处理空白行。因此([^ \r\n])\r\n可能是更好的搜索字符串。

答案 1 :(得分:2)

请注意,^[^\r\n]*\r\n匹配尾随\r\n的完整行。因此,如果用空字符串替换,则删除整行。

您可以使用\R构建。

,而不是对换行符序列进行硬编码

如果要匹配某些子模式之前没有的东西,则需要使用负向lookbehind。这里,(?<!\h)应该做(不是任何水平空格)。

所以,使用

(?<!\h)\R

如果您有多个换行符,请添加+量词:

(?<!\h)\R+

替换将是一个空字符串。

enter image description here