我写了一些代码来用某些字母分割给定的字符串。代码如下:
let split_by_each_letter_here = "KM";
let re = new RegExp("(?<=[" + split_by_each_letter_here + "])");
let ans = "YGMGPKPDDFLKJJ".split(re);
returns -> [ 'YGM', 'GPK', 'PDDFLK', 'JJ' ]
注意数组中的每个拆分是如何在“K”或“M”处(在 split_by_each_letter_here
中指定)。
我想修改此代码,以便每次在我的字符串中直接跟在一个拆分字母(“K”或“M”)之后的“P”时,该字符串不会拆分。例如:
let str = "YGMGPKPDDFLKJJ";
// the array should be ['YGM', 'GPKPDDFLK', 'JJ'];
请注意,由于第一个 'K' 后紧跟一个 'P',因此字符串 不会在那里分裂。但是,它确实在第二个“K”处分裂,因为 'K' 后面没有'P'。
使用正则表达式可以实现我想要的输出吗?我该怎么做呢? 谢谢!
答案 0 :(得分:5)
我们可以尝试使用 match
如下:
var input = "YGMGPKPDDFLKJJ";
var matches = input.match(/.+?(?:[KM](?!P)|$)/g);
console.log(matches);
这里是正则表达式模式的解释:
.+? match all content up to the nearest
(?:
[KM] the letters K or M
(?!P) which are NOT immediately followed by P
| OR
$ the end of the input (consume everything until the end)
)