c++ - 使用正则表达式从JSON提取消息内容

标签 c++ json regex

我需要从JSON提取消息的内容,不允许使用JSON解析器,所以我尝试使用正则表达式,但是我在提取消息内容时遇到了麻烦。我正在使用C++。
这是JSON文件的示例:

{
   "id":"776752463986294785",
   "type":0,
   "content":"\"",
   "channel_id":"762106839054811176",
   "author":{
      "id":"487706666905894923",
      "username":"Emzak",
      "avatar":"a70859ecda1355dfd55bddcfd0194458",
      "discriminator":"6235",
      "public_flags":0
   },
   "attachments":[
      
   ],
   "embeds":[
      
   ],
   "mentions":[
      
   ],
   "mention_roles":[
      
   ],
   "pinned":false,
   "mention_everyone":false,
   "tts":false,
   "timestamp":"2020-11-13T10:16:58.777000+00:00",
   "edited_timestamp":null,
   "flags":0
}
正如我所说的,我需要Content字段,我当前的正则表达式是:
"content"[ :]+(\"[^"]*\")
除非内容中没有引号,否则该方法有效。如果有的话,它们总是会被逃脱,但是我还没有找到一种方法来摆脱它们。我当前的正则表达式用双引号给我这个字符串:
"content": "\"
如果在引号后面有任何消息,那将是有问题的。我想得到这个字符串:
"content": "\""
任何帮助将不胜感激,谢谢:)

最佳答案

您可以使它转义\",如下所示:

"content"[ :]+(\"(?:\\.|[^"])*\")
它创建一个非捕获组,该组将每个\与以下字符以及原始[^"]条件进行匹配。

关于c++ - 使用正则表达式从JSON提取消息内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64819628/

相关文章:

json - 如何使用 Excel vba 从 json 字符串中的 json 对列表中找到最大值?

regex - 如果单个字符不止一个则不匹配

c++ - 将带有引号和逗号的字符串文件读入字符串数组

c++ - 如何正确 "perfect forward"getter 函数?

c++ - 为什么使用右值引用时unique_ptr的所有权没有转移?

javascript - 在 JavaScript 中,如何返回一个 bool 值来指示 JSON 对象中是否存在键?

c# - 再次: JsonSerializationException: Unable to find a constructor to use for type "custom class"

Javascript 正则表达式测试()错误 : Object has no method 'test'

PHP 正则表达式失败,字符串中出现 '&';在 javascript 中(正确)传递

c++ - Windows 控制台中未显示 unicode 输出