删除新行,除非新行前面有双倍空格



我想从文本中删除新行,除非句子以双空格结尾(我使用的是JavaScript)。

这:

This
is
a
test.

应该转向这个:

This is a test.

但是这个:

This
is  //there is a double space here
a//but not here
test.

应该转向这个:

This is
a test.

到目前为止我的方法:我可以用一个新行替换多个空格,后跟一个新行:

var doubleSpaceNewline = new RegExp(/(s){2,}n/g);
test = text.replace(doubleSpaceNewline, 'n');

但是,如何在不删除要保留的换行符的情况下删除换行符呢?

我宁愿删除除双倍或更多空格前面的换行符之外的所有新行,然后用单个新行替换双倍空格 + 换行符。

我需要一个与s+匹配的正则表达式,除非(s){2,}n.似乎无法将两者结合起来。

text = text.replace("  n", '****************');
text = text.replace("n", ' ');
text = text.replace('****************', "  n");

这就是你所追求的吗?不使用正则表达式,但它的过程有点简单。

要在正则表达式的帮助下找到"一个新行,如果前面没有,但有 2 个或更多(在你的代码中由 {2,} 判断)空格",你可以使用负回溯。查找它的代码是

(?<!s{2,})n

然后像往常一样更换。

最新更新