删除包含内容的行之间的空行

时间:2017-11-21 18:54:21

标签: javascript regex

我想知道是否有人可以通过javascript帮助我使用正则表达式。

所以基本上我有以下字符串作为例子:

266我希望使用正则表达式或其他任何方式将其转换为67,108,900 bytes 2,796,204.16 bytes ---------------- = ---------------------- = 2.796 * 10^6 bytes/sec = 2.796 MBps 24 sec 1 sec 以使用javascript执行此操作。

这里的想法是只删除包含内容的行之间的一个空行。 有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

一种可能的方法:

var str = "A\nB\n\n\nC\n\n\n\n\nD"

var out = str.replace(/\n(\n+)/g, '$1')

console.log(out) // "A\nB\n\nC\n\n\n\nD"

答案 1 :(得分:0)

代码

根据我的评论

See regex in use here

[\r\n]([\r\n]+)

仅使用\n

See regex in use here

\n(\n+)

替换

$1

用法



const regex = /\n(\n+)/gm;
const str = `A
B


C




D`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);




结果

输入

A
B


C




D

输出

A
B

C



D

解释

它匹配\n,然后将其后面的所有\n捕获到捕获组1.然后用捕获组1($1)替换这些位置。结果比以前少\n。这只会匹配2 + \n,并且与单独的\n不匹配。

答案 2 :(得分:0)

您可以使用LookAhead执行此操作。在需要时使用搜索内容但不在结果查询中包含此内容。

var str = "A\nB\n\n\nC\n\n\n\n\nD"

var resultWithLookAhead = str.replace(/(?=\n)(\n+)/g, "\n")

console.log(resultWithLookAhead);