gpt4 book ai didi

javascript - 如何获取 RegExp 中每场比赛的 startIndex

转载 作者:行者123 更新时间:2023-11-28 10:50:55 24 4
gpt4 key购买 nike

我在正则表达式结果方面遇到了一些困难。基本上我想要的是 startIndex这为我提供了与源字符串相关的每个匹配的确切位置。所以用字符串代替数组

var regex = /(?:\w*) from "(\w*)"/g
var result = regex.exec('import foo from "foo"');
console.log(result.slice(1)) // => ["foo"]

我想要一个像这样的对象:

[{
value: 'foo',
startIndex: 17
}]

我认为如果不使用特殊的库这是不可能的,所以我的问题是:

您知道有哪个库可以返回更精确的匹配信息,或者有任何其他解决方案可以解决这个问题吗?

请注意,这只是一个正则表达式示例。在实际应用中我会有超过10个完全不同的RegExp。因此,首选动态方法。

添加

我需要这个用于 GitHub Linker 的下一个主要版本。目前,链接替换是使用 jquery 选择器完成的,这不太灵活,有时还会出错。 RegExp 将有望减少开销,以便其他开发人员可以轻松扩展 GitHub Linker与其他语言,如 Ruby、Python .... 目前仅支持 JavaScript。

这就是我寻找可靠且灵活的解决方案的原因。

-谢谢

最佳答案

已接受的答案 here似乎很接近。我在下面对其进行了一些调整,它似乎已经接近所需的内容。

var str = 'import foo from "foo" import bar from "bar"'
var regex = /(?:\w*) from "(\w*)"/g;
var output = [];
while ((result = regex.exec(str))) {
var offset = result[0].lastIndexOf(result[1]);
output.push('Value: ' + result[1] + ', startIndex: ' + (result.index+offset));
}

document.getElementById('results').innerHTML = output;
<div id="results"></div>

关于javascript - 如何获取 RegExp 中每场比赛的 startIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com