我想看看是否有可能查找个人keys
一出JSON
字符串中的Javascript并返回它Value
用Regex
。有点像构建JSON
搜索工具。
想象以下JSON
"{
"Name": "Humpty",
"Age": "18",
"Siblings" : ["Dracula", "Snow White", "Merlin"],
"Posts": [
{
"Title": "How I fell",
"Comments": [
{
"User":"Fairy God Mother",
"Comment": "Ha, can't say I didn't see it coming"
}
]
}
]
}"
我希望能够搜索JSON
字符串并仅提取单个属性。
让我们假设它function
已经是一个,看起来就像。
function getPropFromJSON(prop, JSONString){
// Obviously this regex will only match Keys that have
// String Values.
var exp = new RegExp("\""+prop+"\"\:[^\,\}]*");
return JSONString.match(exp)[0].replace("\""+prop+"\":","");
}
这将返回的子串Value
的Key
。
例如
getPropFromJSON("Comments")
> "[
{
"User":"Fairy God Mother",
"Comment": "Ha, can't say I didn't see it coming"
}
]"
如果您想知道为什么为什么要代替使用它JSON.parse()
,我正在建立一个JSON文档存储localStorage
。localStorage
仅支持键/值对,因此我JSON
将整个字符串存储Document
在unique中Key
。我希望能够在文档上运行查询,理想情况下无需JSON.parsing()
整个Collection
过程的开销,Documents
然后遍历Keys
/
nested Keys
来查找匹配项。
我不是最擅长的,regex
所以我不知道该怎么做,或者regex
独自一人是否有可能。这只是一个实验,以找出是否可能。任何其他想法作为解决方案将不胜感激。
我强烈建议您不要这样做。JSON不是此处明确指出的常规语言:https : //cstheory.stackexchange.com/questions/3987/is-
json-a-regular-language
引用以上文章:
例如,考虑一个由数组组成的数组:
[ [ [ 1, 2], [2, 3] ] , [ [ 3, 4], [ 4, 5] ] ]
显然,您无法使用真正的正则表达式进行解析。
我建议将JSON转换为对象(JSON.parse),并实现find函数遍历该结构。
除此之外,您还可以查看Douglas
Crockford的json2.js解析方法的内容。也许经过更改的版本将允许您搜索JSON字符串并仅返回您要查找的特定对象,而无需将整个结构转换为对象。仅当您从不从JSON检索任何其他数据时才有用。如果这样做的话,您可能也已经将整个事情从一开始就进行了转换。
编辑
为了进一步展示正则表达式是如何分解的,下面是一个正则表达式,它试图解析JSON
如果将其插入http://regexpal.com/,并选中“全部匹配”。您会发现它可以很好地匹配某些元素,例如:
正则表达式
"Comments"[ :]+((?=\[)\[[^]]*\]|(?=\{)\{[^\}]*\}|\"[^"]*\")
JSON匹配
"Comments": [ { "User":"Fairy God Mother", "Comment": "Ha, can't say I didn't see it coming" } ]
正则表达式
"Name"[ :]+((?=\[)\[[^]]*\]|(?=\{)\{[^\}]*\}|\"[^"]*\")
JSON匹配
"Name": "Humpty"
但是,一旦您开始查询具有嵌套数组的高级结构(例如“帖子”),就会发现您无法正确返回该结构,因为正则表达式没有上下文,其中“]”是指定的结尾结构体。
正则表达式
"Posts"[ :]+((?=\[)\[[^]]*\]|(?=\{)\{[^\}]*\}|\"[^"]*\")
JSON匹配
"Posts": [ { "Title": "How I fell", "Comments": [ { "User":"Fairy God Mother", "Comment": "Ha, can't say I didn't see it coming" } ]
我需要解析一个逗号分隔的文本文件,其中一行可以包含一个json作为列值。该文件还包含一个标题行。 我试图构建一个正则表达式,这样我就可以解析文件并为文件的每一行和hashmap列表创建hashmap。 我意识到regex可能会过于复杂,但我不知道还能如何设计代码来获得每行的hashmap。 我尝试了不同的方法——从SO和其他网站上的例子,但无法获得良好的工作表达。它们处理不同的部分,但不处理整个数
问题内容: 我想获取HTML中隐藏的输入字段的值。 我想用Python编写一个正则表达式,该表达式将返回的值,因为我知道HTML中的行遵循以下格式 有人可以提供Python范例来解析HTML值吗? 问题答案: 对于这种特殊情况,BeautifulSoup比正则表达式更难编写,但是它更健壮…我只是为BeautifulSoup示例提供帮助,因为您已经知道要使用哪个正则表达式:-)
本文向大家介绍JavaScript正则表达式解析URL的技巧,包括了JavaScript正则表达式解析URL的技巧的使用技巧和注意事项,需要的朋友参考一下 正则表达式是一个描述字符模式的对象。 首先,此片文章并不是直接告诉你,url的正则表达式是什么,以及怎么使用这个正则表达式去解析一个URL地址,相信这种问题在网络上已经能找到很多。本文的宗旨在于教你如何理解URL的正则表达式,以达到理解正则表达
我不确定是否可以这样做,但我想将一个非常简单的JSON文件解析为一个字符串数组。 示例文件: 到目前为止,我认为我应该使用带有模式的扫描仪来获得我的输出,但没有做到这一点。 因为这个模式显然是错误的,因为它认为“,”是合适的,但我希望它不包括在内...: S 我也接受一些建议,这些建议可能会以任何其他方式被解析。也许是JSON解析器?但是因为文件太简单了,我认为没有必要。
本文向大家介绍javascript中的正则表达式使用详解,包括了javascript中的正则表达式使用详解的使用技巧和注意事项,需要的朋友参考一下 [1]定义:正则又叫规则或模式,是一个强大的字符串匹配工具,在javascript中是一个对象 [2]特性: [2.1]贪婪性,匹配最长的 [2.2]懒惰性,不设置/g,则只匹配第1个 [3]两种写法: [3.1]perl写法(使用字面量形
问题内容: 我正在寻找一个.NET正则表达式来提取网页中的所有URL,但是还没有找到一个足以涵盖指定链接的所有不同方式的URL。 还有一个问题: 是否有 一个正则表达式可以统治所有人 ?还是我最好使用一系列不那么复杂的正则表达式,而只对原始HTML使用多重传递?(速度与可维护性) 问题答案: ((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+) 我从regexlib