gpt4 book ai didi

javascript - 如何匹配 "something":"thestring"模式?

转载 作者:行者123 更新时间:2023-11-30 09:32:15 25 4
gpt4 key购买 nike

注意:我更改了问题的标题以及所有对 JSON 的引用,以便问题更好地反射(reflect)我的问题。我多次收到“迭代对象比在序列化版本上工作更好”的建议,但我相信(并且肯定是错误的)在字符串中搜索定义明确的模式比迭代或递归代码更容易迭代一个对象

我需要从字符串中提取模式 "something":"thestring"

源字符串会有很多其他的组合比如"something":[{"thestring":{"key":18,"anotherkey":"astring"}}],从中仅搜索 "anotherkey":"astring" 对。

我特别感兴趣的是获取值的内容,即第一个示例中的 thestring(以及第二个示例中的 astring)。

我尝试匹配 ".*?","(.*?)" 但我得到的不仅仅是这对,匹配引号后的逗号(并且它从那里走下坡路) .

测试字符串的示例和我失败的测试在 Regex101

最佳答案

我会这样写:

function extractStrings(obj) {
var stringSet = [];
function extractStringsHelper(obj) {
if (typeof obj === 'string' && stringSet.indexOf(obj) === -1) {
stringSet.push(obj);
} else if (typeof obj === 'array') {
for (var i=0; i<obj.length; i++) {
extractStringsHelper(obj);
}
} else if (typeof obj === 'object' && obj !== null) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
extractStringsHelper(obj[key]);
}
}
}
}
extractStringsHelper(obj);
return stringSet;
}

> extractStrings({'a': "strA", 'b': ["strB1", 1, "strB2", {'n': "strC"}]})
> (4) ["strA", "strB1", "strB2", "strC"]

您也可以使用正则表达式查找:

"[^"]+":"([^"]+)"

这是您使用修改后的正则表达式的示例:https://regex101.com/r/uxS9k0/2

但这条路是黑暗的,充满了恐怖。例如,如果字符串包含转义双引号,它就会中断。一旦开始考虑所有可能的情况,您基本上就是在重写 JSON 分词器。

关于javascript - 如何匹配 "something":"thestring"模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573038/

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