[英]Split a string with regular expression lookarounds using javascript
如果前一个字符不等于下一个字符,我想使用String.prototype.split
拆分字符串,这是目标结果:
'abcd' => ['a', 'b', 'c', 'd']
'aaabbbccd' => ['aaa', 'bbb', 'cc', 'd']
我知道可以仅通过lookbacks
来拆分字符串:
const result = 'aaabbbccd'.split(/(?<=a)/); console.log(result); // ["a", "a", "a", "bbbccd"]
所以我想找到一个表达式来找到它的回溯不等于向前看的两个字符的分隔符。
但是我试过这个,它不起作用:
const result = 'aaabbcccd'.split(/(?<!\\2)(?=.)/); console.log(result); // ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd']
那么是否有正则表达式来实现这一目标? 或者用正则表达式根本不可能做到这一点?
使用反向引用,您可以使用.match()
而不是.split()
来获得所需的结果,如下所示:
const r1 = 'abcd'.match(/(.)\\1*/g); const r2 = 'aaabbcccd'.match(/(.)\\1*/g); console.log(r1); // ['a', 'b', 'c', 'd'] console.log(r2); // ['aaa', 'bb', 'ccc', 'd']
这将匹配任何字符(.)
,后跟相同的字符\\1
零次或多次
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.