我想从文本中删除新行,除非句子以双空格结尾(我使用的是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
然后像往常一样更换。