【问题标题】:modern.ie vms json data extract from website从网站中提取的modern.ie vms json数据
【发布时间】:2016-01-27 00:44:34
【问题描述】:

我相信对正则表达式有疑问,但也许有更好的解决方案。

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

正如我在 html 代码中看到的,有一个正则表达式的起点:

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

&lt;script&gt;结束

我试图在 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/"
}

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

【问题讨论】:

  • 您发布链接的网站解释了正则表达式的工作原理,您找不到基于此的解决方案吗?
  • 如果您发布了您希望通过将正则表达式应用于示例文本来获得的匹配,那就太好了

标签: c++ json regex qt


【解决方案1】:

过滤器来自:"softwareList": [(和很多行...)到 ],"version": 可以,怎么写?

基于这个解释的正则表达式如下:

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

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

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

这是proof

【讨论】:

  • 有什么方法可以从中删除“版本”吗?因为我喜欢有效的 JSON,所以我必须在最后删除 ,"version"。马克的回答与我喜欢做的事情很接近。
  • 无法编辑评论,但找到了我喜欢的内容! link
猜你喜欢
  • 1970-01-01
  • 2018-04-03
  • 2023-01-16
  • 2015-08-26
  • 1970-01-01
  • 2023-04-05
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多