【问题标题】:Extracting message content from JSON using regular expresions使用正则表达式从 JSON 中提取消息内容
【发布时间】:2020-11-13 19:25:08
【问题描述】:

我需要从 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": "\""

任何帮助将不胜感激,谢谢:)

【问题讨论】:

    标签: c++ json regex


    【解决方案1】:

    你可以让它逃逸\"如下:

    "content"[ :]+(\"(?:\\.|[^"])*\")
    

    它创建一个非捕获组,匹配每个\ 与以下字符,以及原始[^"] 条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2011-08-25
      • 2011-04-07
      • 2011-07-23
      • 2017-06-26
      相关资源
      最近更新 更多