gpt4 book ai didi

javascript - 如何在没有标记的情况下匹配两个标记之间的字符串

转载 作者:行者123 更新时间:2023-11-28 15:12:45 26 4
gpt4 key购买 nike

我有一个段落,我想从中提取由双方括号 "[["... "]]" 括起来的字符串。括号内有一些字符串包含一个条 |我想省略那些。我创建了以下正则表达式 \[\[([^|]+?)\]\]/g 该正则表达式工作完美,但它返回带有方括号的字符串。有类似的问题可以通过使用 str.split 来解决这个问题,但我匹配了 200 多个字符串,这可能会降低性能,因此我只想要正则表达式的答案。

编辑 - 忘记提及这是一个很长的段落,我需要所有匹配项,因此我指定/g 标志来获取所有匹配项的数组。

最佳答案

你的正则表达式看起来不错。我认为你只是看到了结果的错误部分。当您获得匹配时,Regex.exec()返回一个数组。索引 0 包含完整匹配,例如"[[value]]",后面的索引包含括号内的每个子匹配,例如“值”。因此,只需查看 match[1] 而不是 match[0]

要处理多个匹配,请添加 g 标志,并使用 while 循环多次运行 Regex.exec() - 这将为每个连续匹配返回一个结果数组,直到找不到更多匹配并返回 null。您只需将每个结果插入一个数组即可。不过你的正则表达式保持不变。

var inputs = [
"foo [[value]] bar",
"foo [[val1|val2]] bar",
"foo [[value1]] bar [[value|2]] fizz [[value3]] buzz",
];

console.clear();
for(var i = 0; i < inputs.length; i++) {

var re = /\[\[([^|]+?)\]\]/g;
var match;
var matches = [];
while((match = re.exec(inputs[i])) !== null) {
matches.push(match[1]);
}

console.log(inputs[i]);
console.log(matches);
}

关于javascript - 如何在没有标记的情况下匹配两个标记之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530075/

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