regex 如何用正则表达式解析键值对?

4zcjmb1e  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一些这样格式的字符串:

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这样的值中也可能有空格,所以我能想到的唯一方法是找到“=”,左边第一个空格和第二个空格之间的数据是当前键,而所有剩余的“=”都是前一个键的值,这很棘手。我该怎么做?

vbkedwbf

vbkedwbf1#

我不会尝试使用正则表达式来做这件事。
有些困难你还没有考虑到。例如,带引号的字符串可以包含一个=,或者(更糟)它可以包含一个引号,所以像这样的东西是不寻常的,但似乎是合法的:

{ "\"key\"=\"value\"" = "This is the value"}

当您解析完它时,本例中的键将是"key" = "value"(字符串中包含引号和等号)。
因此,您不仅需要 * 识别 * 正在处理的每个部分的开始和结束,而且在某些情况下,您需要对其进行一些转换以获得正确的字符串。
现在,我不会说这不能用正则表达式来完成--但我认为(最好的情况下)开发一个能正确工作的正则表达式会比它的价值更麻烦。

相关问题