【问题标题】:How can I extract key-values from one-level JSON string using regex?如何使用正则表达式从一级 JSON 字符串中提取键值?
【发布时间】:2019-10-13 18:06:16
【问题描述】:

我想编写一个正则表达式来提取某些JSON 字符串的特定键和值。 这是JSON 字符串:

{"key1": "value1", "key2": "value2"}//there are more key-values 

这是我想出的正则表达式:

^{\s*("([^\"]+)"\s*:\s*"([^\"]+)",?)+\s*}$

问题是上面提到的正则表达式只支持第一组key-value:

{"key1": "value1"}

{"key1": "value1", }

"value""key" 前后有尾随空格,但正如我所提到的,它不适用于多个这样的键值对:

{"key1": "value1", "key2": "value2"}

我已添加 ^{\s*("([^\"]+)"\s*:\s*"([^\"]+)",?)+\s*} $ 使正则表达式支持 json 中 "key": "value" 模式的重复。 但它不起作用。我该如何解决这个问题?

【问题讨论】:

  • 为什么不JSON.parse
  • 我正在使用 cpp,由于某些原因我不想添加任何外部库

标签: regex


【解决方案1】:

我想如果你必须这样做,

(?<={|,)\s*"([^"]+)"\s*:\s*"([^"]+)"\s*(?=}|,)

或者,

(?<={|,)\s*"([^"]+)"\s*:\s*"([^"]*)"\s*(?=}|,)

或者一些类似的表达方式在某种程度上可能还可以。

Demo


如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在this link 中观看它如何与一些示例输入匹配。


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多