正则表达式:获取捕获组的位置列表,不匹配
示例字符串: #ABC ABC@ #ABC@ ABC
示例正则表达式: /(?:[^#])(ABC)(?!@)/g
(仅在示例中与ABC
匹配)
我需要得到一个匹配列表[[start,end],...],但不包括第一组,因为JS正则表达式不支持lookbehind。
(注意:假设捕捉和未捕捉的部分可以是任意长度的,不仅仅是例子中的1或3个字符)
不幸的是,没有办法获得在字符串内匹配组的索引。
作为一种解决方法,确保在必要的捕获组/模式部分之前捕获模式的整个部分。 然后,如下所示操作匹配索引和组的第一个值:
var re = /([^#]|^)ABC(?!@)/g;
var str = 'ABC #ABC ABC@ #ABC@ ABC';
var pos = [];
while ((m = re.exec(str)) !== null) {
pos.push([m.index+m[1].length, m.index+m[0].length]);
}
console.log(pos);
链接地址: http://www.djcxy.com/p/12983.html
上一篇: regex: get list of the locations of captured groups, not matches