正则表达式匹配动态JSON的引号和不带引号

时间:2018-01-12 13:50:08

标签: json regex

我有以下文字字符串:

IpV4Layer ipV4Layer = packet.Ethernet.IpV4.ExtractLayer();
ipV4Layer.Source = newAddress;

Packet newPacket = PacketBuild.Build(DateTime.Now, packet.Ethernet.ExtractLayer(), ipV4Layer, packet.Ethernet.IpV4.Payload.ExtractLayer());

我需要从中获取两个组(键值对),以便输出仅为:

ipV4Layer.HeaderChecksum = null;

如果双引号存在,则要求使用单个正则表达式来获取双引号中的所有内容。如果没有,请取不带引号的值。 在上面的示例中,36和null是没有引号的那个,它们也需要被捕获。 我已经尝试了很多,但未能这样做。

更新: 我不知道为什么我要为这个问题投票。是的,这是我试图解析的JSON,但有一个原因,我为什么这样做而不使用任何文档解析器。 我应该使用Talend将动态JSON转换为键值对。我的意思是动态是JSON的字段可以变化,因此我没有固定的模式,因此不能使用文档解析器(它需要固定的JSON结构)。我正在设计一个解决方案,使用Normalizer(在逗号上)来解决这个问题,然后使用正则表达式提取将使用双引号的键值对。我自己尝试了很多东西,因为我不是正则表达式的专家,所以我来这里是为了得到输入。 如果您对此有任何更好的解决方案,我将非常乐意接受您的意见。

1 个答案:

答案 0 :(得分:2)

这个怎么样?

/"?([^\n"]*)"?:"?([^\n"]*)"?/

详细解释:

https://regex101.com/r/UM0rl2/1/