【发布时间】:2021-09-16 05:59:57
【问题描述】:
我正在处理一个文件,该文件的一列中包含以下格式的数据。我需要为相应的键和值添加双引号,以便我可以将字符串解析为 JSON
输入数据:
Street:StreetName,Address:ABC Road, CityName,PinCode:00000
我正在尝试使用下面的正则表达式,它以某种方式将输出弄乱了,因为 Address Key 在其值内。
我尝试的正则表达式是([a-zA-Z0-9-]+):([a-zA-Z0-9-,]+),替换为\"$1\":\"$2\"
当前输出(查看 Key 'Address' 的值):"Street":"StreetName","Address":"ABC" Road, CityName,"PinCode":"00000"
预期输出:"Street":"StreetName","Address":"ABC Road, CityName","PinCode":"00000"
但是,如果值中没有逗号,则此方法有效
输入:Street:StreetName,Address:ABC Road CityName,PinCode:00000
输出:"Street":"StreetName","Address":"ABC Road CityName","PinCode":"00000"
我知道我的正则表达式中缺少某些内容。请问有什么想法吗?
提前致谢
【问题讨论】:
-
您将
;作为第一个字段之间的分隔符,将,作为最后两个字段之间的分隔符 - 对吗? -
@SamWhan 我很糟糕,这是一个错字。分隔符仅为
,。现已编辑。 -
如果不是JSON,为什么要显式转成JSON,解析成JSON?你不能不通过 JSON 直接按自己的条件解析它吗?例如。用逗号分隔,然后用冒号分隔?
-
@deceze 如果字段数据有逗号,则不起作用。您需要对格式进行某种验证才能提取它。
-
@Sam 绝对是的。如果数据包含引号,则此 JSON“转换”也会失败。因此,由于这两种方法在特定情况下都会失败,a)我们需要了解更多关于上述情况的信息,并且 b)您应该使用更简单的选项(不是 regexen + JSON)。