我想从文本中删除新行,除非句子以双空格结尾(我正在使用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
匹配的正则表达式。似乎无法将两者结合起来。
答案 0 :(得分:3)
text = text.replace(" \n", '****************');
text = text.replace("\n", ' ');
text = text.replace('****************', " \n");
这就是你要追求的吗?不使用正则表达式,但它的程序更简单。
答案 1 :(得分:1)
要查找"如果没有先行,则会有一个新行但是或更多(在代码中通过{2,}判断)空格"在正则表达式的帮助下,您可以使用negative lookbehind。找到它的代码是
(?<!\s{2,})\n
然后像往常一样更换。