【发布时间】:2019-11-19 05:55:45
【问题描述】:
我正在尝试提取以下示例数据中的字段
{"Value":{"Data":{"Items":[{"FieldType":"ABC","Value":"*****"},{"FieldType":"ACB","Value":"*****"},{"FieldType":"ABCD","Value":"*****"},,{"FieldType":"XYZ","Value":"*****"}],"EncryptedDocKey":"*****","Domain":"*****","Partner":"***","Carrier":"****"},"RequestTrackerId":"****","Message":"OK"},"Formatters":[],"ContentTypes":[],"DeclaredType":null,"StatusCode":null}
{"Value":{"Data":{"Items":[{"FieldType":"ABC","Value":"*****"},{"FieldType":"XYZ","Value":"*****"},{"FieldType":"ACD","Value":"*****"}],,"EncryptedDocKey":"*****","Domain":"*****","Partner":"***","Carrier":"****"},"RequestTrackerId":"****","Message":"OK"},"Formatters":[],"ContentTypes":[],"DeclaredType":null,"StatusCode":null}
{"Value":{"Data":{"Items":[{"FieldType":"XYZ","Value":"*****"},{"FieldType":"ACD","Value":"*****"}],,"EncryptedDocKey":"*****","Domain":"*****","Partner":"***","Carrier":"****"},"RequestTrackerId":"****","Message":"OK"},"Formatters":[],"ContentTypes":[],"DeclaredType":null,"StatusCode":null}
{"Value":{"Data":{"Items":[{"FieldType":"ABCD","Value":"*****"}],,"EncryptedDocKey":"*****","Domain":"*****","Partner":"***","Carrier":"****"},"RequestTrackerId":"****","Message":"OK"},"Formatters":[],"ContentTypes":[],"DeclaredType":null,"StatusCode":null}
我需要将FieldType (ABC,XYZ,ABCD,ACB,ACB ...)旁边的文字提取到V1、V2、V3、V4、V5等...
如果有三个字段,我有一个正则表达式可以获取,但如果字段多于或少于 3 个,则正则表达式不会映射。
我试过这个正则表达式
.?"FieldType":"(?<V1>\w+)".+?"FieldType":"(?<V2>\w+).+?"FieldType":"(?<V3>\w+)
我还想提取fieldtype和,EncryptedDocKey,Domain,Partner,Carrier,RequestTrackerId,Message,Formatters,ContentTypes,DeclaredType,StatusCode中的所有字段
【问题讨论】:
-
为什么不使用 JSON.NET?
-
我强烈建议您不要自己解析 JSON,当然也不要使用正则表达式。这是我写的一篇关于这个主题的文章:blog.newrelic.com/engineering/7-things-never-code
标签: regex regex-lookarounds regex-negation regex-group regex-greedy