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