像我相信的那样对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
答案 0 :(得分:0)
过滤来自:
"softwareList": [
(和许多行...)到],"version":
会起作用,如何写一个?
基于此解释的常规表达如下:
"softwareList": [.*],"version":
但它不适用于您在更新中添加的示例。根据您需要的限制,下一个将完成工作:
"softwareList":\s*\[.*\],\s*"version":
这是proof。