我需要从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/