我想编写一个正则表达式来提取某些JSON
字符串的特定键和值。这是JSON
字符串:
{"key1": "value1", "key2": "value2"}//there are more key-values
这是我想出的正则表达式:
^{\s*("([^\"]+)"\s*:\s*"([^\"]+)",?)+\s*}$
问题是上述正则表达式仅支持第一组键值:
{"key1": "value1"}
要么
{"key1": "value1", }
如前所述,在前后都有尾随空格"value"
,"key"
但是对于这样的多个键值对,它不起作用:
{"key1": "value1", "key2": "value2"}
我添加了^ {\ s * (
“([[^ \”] +)“ \ s *:\ s *”([^ \“] +)” ,? )+
\ s *} $使正则表达式支持"key": "value"
json中模式的重复。但这是行不通的。我怎样才能解决这个问题?
我猜你是否必须
(?<={|,)\s*"([^"]+)"\s*:\s*"([^"]+)"\s*(?=}|,)
要么,
(?<={|,)\s*"([^"]+)"\s*:\s*"([^"]*)"\s*(?=}|,)
或某些类似的表达式可能在某种程度上可以正常工作。
如果您想简化/修改/探索表达式,请在regex101.com的右上方面板中进行说明。如果您愿意,您还可以在此链接中观看,它如何与一些示例输入匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句