我有一些这样格式的字符串:
aaaaaaaaaaaa //first line
[key = [metadata = 1 metadata = 2 metadata =3] KEY(1) = 100
KEY(2) = 16:30:00 KEY(3) = 2020-12-12 08:30:30 KEY(4) = 0]
我想获取Json格式的键值对,如{"KEY(1)":"100", "KEY(2)":"16:30:00", "KEY(3)":"2020-12-12 08:30:30", "KEY(4)":"0"}
我有点难以处理最后一部分,因为在像2020-12-12 08:30:30
这样的值中也可能有空格,所以我能想到的唯一方法是找到“=”,左边第一个空格和第二个空格之间的数据是当前键,而所有剩余的“=”都是前一个键的值,这很棘手。我该怎么做?
1条答案
按热度按时间vbkedwbf1#
我不会尝试使用正则表达式来做这件事。
有些困难你还没有考虑到。例如,带引号的字符串可以包含一个
=
,或者(更糟)它可以包含一个引号,所以像这样的东西是不寻常的,但似乎是合法的:当您解析完它时,本例中的键将是
"key" = "value"
(字符串中包含引号和等号)。因此,您不仅需要 * 识别 * 正在处理的每个部分的开始和结束,而且在某些情况下,您需要对其进行一些转换以获得正确的字符串。
现在,我不会说这不能用正则表达式来完成--但我认为(最好的情况下)开发一个能正确工作的正则表达式会比它的价值更麻烦。