正则表达式提取 Json 属性名称

Regex extract Json attributes name

我想提取 Json 字符串的所有属性名称。我想出了一个表达式,但它不适用于某些特定情况, 我构建的表达式如下

"([a-zA-Z0-9-]*)"(?::\s(?:"[a-zA-Z0-9-\s:]*")|(?:\s^null$)|(?:\s[0-9]+,))

它适用于像这样的属性:

{"dataAreaId": "cel",    "CustomerAccount": "C101112",    "AddressBrazilianCNPJOrCPF": "",    "PartyType": "Organization"}

但它确实retrieve/match这些属性:

{ "DeliveryAddressLongitude": 0,"AddressTimeZone": null,"FullPrimaryAddress": "7800 Avenue Aurtweuil Suite 28841\nBrossard QC J2Z 3P1\nCanada"}

在我苦苦挣扎的时候,我会很感激能得到任何指导。

干杯

文森特

使用生成的 json 您只需要匹配冒号前面的单词,对吧,同时考虑引号?例如:

/("?)(\b\w+\b):/gm

编辑:

  • /.../gmgm是修改表达式行为的标志,其中g(全局)表示尝试在string 和 m(多行)意味着 使字符串中的每一行都可以被 ^$ 锚定;您实际上不需要 m 标志,这是我的疏忽。 根据正则表达式的风格,您将使用如上所示的标志 - 在第二个表达式定界符之后,作为匹配函数的参数或作为表达式内修饰符,如 (?g)。我只是发现 /.../flags 一个很好的快捷方式来显示带标志的表达式。
  • \b是一个单词边界,通过确保它的两边不能有一个单词字符来锚定一个单词字符序列;如果有,表达式将不匹配。在这个表达式中,我只是用它来使引擎在考虑可选 " 的同时更快地使坏字符串失败。当您仅在格式良好的 JSON.
  • 上使用它时,此表达式并不严格需要它们