来自网站的modern.ie vms json数据提取

时间:2016-01-26 15:27:52

标签: c++ json regex qt

像我相信的那样对regexp有疑问,但也许有更好的解决方案来做到这一点。

我想从网站中提取JSON数据: https://dev.windows.com/en-us/microsoft-edge/tools/vms/windows/

正如我在html代码中看到的那样,regexp有一个起点:

<script>var edgePortal = window.edgePortal || {}; edgePortal.vms = {"id":"20151028", ....

<script>

结束

我试图搜索github,可能有一些人有一些正则表达式值来提取这个JSON,但没有找到任何东西。

我知道这些数据每天都没有变化,可以手动进行这种提取+一些代码清理(添加空格/标签等),但我喜欢用C ++ / Qt

在Qt中已经有'下载'html和一些基本正则表达式来提取这些数据。我不知道的是我可以用什么过滤器来获取它们。

过滤自:"softwareList": [(以及许多行...)到],"version":是否有效,以及如何编写一个?

更新: 我试图从中提取:

    {
   "softwareList": [
      {
         "softwareName": "VirtualBox",
         "osList": [
            "Windows",
            "Mac",
            "Linux"
         ]
      }
   ],
   "version": "20151028",
   "active": true,
   "__id": "cbd5c5cd-4e47-40c4-9897-efa391d55d9d",
   "__colId": "vms",
   "_rid": "5AVxAKn1WwDzAAAAAAAAAA==",
   "_ts": 1450222713,
   "_self": "dbs/5AVxAA==/colls/5AVxAKn1WwA=/docs/5AVxAKn1WwDzAAAAAAAAAA==/",
   "_etag": "\"00001a01-0000-0000-0000-5670a4790000\"",
   "_attachments": "attachments/"
}

(?=softwareList)(.*?)(?=version),但看起来不太好: https://regex101.com/r/eZ1gT7/285

1 个答案:

答案 0 :(得分:0)

  

过滤来自:"softwareList": [(和许多行...)到   ],"version":会起作用,如何写一个?

基于此解释的常规表达如下:

"softwareList": [.*],"version":

但它不适用于您在更新中添加的示例。根据您需要的限制,下一个将完成工作:

"softwareList":\s*\[.*\],\s*"version":

这是proof