使用RegEx替换角色的每个第n个实例

时间:2016-08-10 01:03:26

标签: regex scriptlet

我有一个以管道分隔的值字符串,如下所示:

s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19

我想要做的是用|替换;的每个第六个实例,以便我有这样的东西..

s1 | s2 | s3 | s4 | s5 | s6 ; s7 | s8 | s9 | s10 | s11 | s12 ; s13 | s14 | s15 | s16 | s17 | s18 ; s19

我设法通过使用下面的代码来替换每一秒管道,但是每隔六个管道就没有运气。

"s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 

**".replace(/\|([^|]*)\|/g, '|$1:')**

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我不会使用正则表达式。相反,您可以拆分|并根据索引进行工作以进行字符串构建。在JavaScript中:

string.split("|").reduce((prev, next, id) => prev + (id % 6 ? "|" : ";") + next);

如果您必须使用正则表达式,您可以查找此模式6次并替换它之间的所有内容:

string.replace(/(.*?\|.*?\|.*?\|.*?\|.*?\|.*?)\|/g, "$1;")