c++ - 如何在 C++ 中使用正则表达式解析键值对
问题描述
我有一些具有这种格式的字符串:
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
,所以我能想到的唯一方法是找到“=”,即第一个空格和第二个空格之间的数据left 是当前键,所有其余的 util 前一个“=”是前一个键的值,这很棘手,我是 REGEX 的新手,我应该怎么做?谢谢!
解决方案
我不会尝试使用正则表达式来做到这一点。
有你还没有考虑到的困难。例如,带引号的字符串可以包含一个=
,或者(更糟糕的是)它可以包含一个引号,所以这样的事情是不寻常的,但似乎是合法的:
{ "\"key\"=\"value\"" = "This is the value"}
完成解析后,这种情况下的键将是"key" = "value"
(在字符串中包含引号和等号。
因此,您不仅需要识别所处理内容的每个部分的开头和结尾,而且在某些情况下,您还需要对其进行一些转换以获得正确的字符串。
现在,我不会说这不能使用正则表达式来完成——但我认为(充其量)开发一个能够正常工作的正则表达式将比它的价值更麻烦。
推荐阅读
- javascript - 无法通过函数更新全局变量?
- ios - Iphone keyboard, input and Safari issue
- mongodb - create mongoose schema in correct way and insert document
- angular - Angular - Redirect to index.html when used as a WordPress theme
- ruby - 如何根据键starts_with对哈希内容进行分组?
- sql - 根据条件添加删除行并在两个日期之间重复它们
- math - 如何在tinymce中自动为乳胶添加分隔符
- html - 是否可以在 Visual Studio 代码的一个父标记内更新属于多个子项的一个属性
- php - JSON 中的 setStatusCode() 在正文中返回标头
- python - 在字符串pickle中用下划线替换空格