找回密码
 加入
搜索
查看: 1163|回复: 11

[网络通信] 【已解决】求取一条正则提取数据

[复制链接]
发表于 2022-4-7 15:48:06 | 显示全部楼层 |阅读模式
本帖最后由 chamlien 于 2022-4-7 17:21 编辑

源数据如下:
"NewsletterV3:44e3f26acd1a": {
        "id": "44e3f26acd1a",
        "__typename": "NewsletterV3",
        "subscribersCount": 57
    },
    "Post:7bf5a183df09": {
        "id": "7bf5a183df09",
        "__typename": "Post",
        "firstPublishedAt": 1648826488738,
        "readingTime": 0.9886792452830189,
        "createdAt": 1648826033137,
        "mediumUrl": "https://lakshmanok.medium.com/why-i-left-google-7bf5a183df09",
        "previewImage": {
            "__ref": "ImageMetadata:1*AmbTCdFrLdvueJU0e3OmhQ.jpeg"
        },
        "title": "Why I left Google",
        "collection": null,
        "creator": {
            "__ref": "User:247b0630b5d6"
        },
        "visibility": "PUBLIC",
        "isProxyPost": false,
        "isLocked": false,
        "previewContent": {
            "__typename": "PreviewContent",
            "subtitle": "The obligatory manifesto that one needs to publish when leaving Google",
            "isFullContent": false
        },
        "tags": [],
        "allowResponses": true,
        "statusForCollection": null,
        "isPublished": true,
        "clapCount": 866,
        "pinnedAt": 0,
        "pinnedByCreatorAt": 0,
        "curationEligibleAt": 0,
        "responseDistribution": "NOT_DISTRIBUTED",
        "inResponseToPostResult": null,
        "inResponseToCatalogResult": null,
        "pendingCollection": null,
        "isNewsletter": false,
        "isAuthorNewsletter": true,
        "voterCount": 217,
        "recommenders": []
    },
    "ImageMetadata:1*_--RXc8V5WaMSH5F-sO3og.png": {
        "id": "1*_--RXc8V5WaMSH5F-sO3og.png",
        "__typename": "ImageMetadata"
    },
    "NewsletterV3:379e9e644de4": {
        "id": "379e9e644de4",
        "__typename": "NewsletterV3",
        "subscribersCount": 455
    },
    "Post:b5a172672bd8": {
        "id": "b5a172672bd8",
        "__typename": "Post",
        "firstPublishedAt": 1649066586515,
        "readingTime": 4.816981132075472,
        "createdAt": 1645141769978,
        "mediumUrl": "https://medium.com/yardcouch-com/elon-musk-people-dont-realize-what-s-coming-b5a172672bd8",
        "previewImage": {
            "__ref": "ImageMetadata:1*_--RXc8V5WaMSH5F-sO3og.png"
        },
        "title": "Elon Musk: People Don’t Realize What’s Coming",
        "collection": {
            "__ref": "Collection:9da99a5586b0"
        },
        "creator": {
            "__ref": "User:8f67d94fbbe9"
        },
        "visibility": "LOCKED",
        "isProxyPost": false,
        "isLocked": true,
        "previewContent": {
            "__typename": "PreviewContent",
            "subtitle": "“Earth won’t exist in 12 years”",
            "isFullContent": false
        },
        "tags": [
            {
                "__ref": "Tag:technology"
            },
            {
                "__ref": "Tag:space"
            },
            {
                "__ref": "Tag:politics"
            },
            {
                "__ref": "Tag:science"
            },
            {
                "__ref": "Tag:elon-musk"
            }
        ],
        "allowResponses": true,
        "statusForCollection": "APPROVED",
        "isPublished": true,
        "clapCount": 1313,
        "pinnedAt": 0,
        "pinnedByCreatorAt": 0,
        "curationEligibleAt": 1649034924969,
        "responseDistribution": "NOT_DISTRIBUTED",
        "inResponseToPostResult": null,
        "inResponseToCatalogResult": null,
        "pendingCollection": null,
        "isNewsletter": false,
        "isAuthorNewsletter": true,
        "voterCount": 133,
        "recommenders": []
    },
    "ImageMetadata:1*uZ_Em7p_1lPOGPwrYQysdA.jpeg": {
        "id": "1*uZ_Em7p_1lPOGPwrYQysdA.jpeg",
        "__typename": "ImageMetadata"
    }



上面数据仅想要提取蓝色部分,也即 Post:xxx 花括号里的内容,应该怎么提取呢?


发表于 2022-4-7 16:10:28 | 显示全部楼层
Highlight code by AuREHelper
(?si)"Post:\w+":\h+({.+?},)\s+"Image

发表于 2022-4-7 16:11:16 | 显示全部楼层
(?is)(?:"Post:\w+":)(.+?)(?=,\s*"ImageMetadata:)
发表于 2022-4-7 16:32:20 | 显示全部楼层
正则虽然可以,但用json更合适。
 楼主| 发表于 2022-4-7 16:53:13 | 显示全部楼层

感谢,如果上面的数据没有换行,正则应该怎么写呢
 楼主| 发表于 2022-4-7 16:54:06 | 显示全部楼层
zghwelcome 发表于 2022-4-7 16:11
(?is)(?:"Post:\w+":)(.+?)(?=,\s*"ImageMetadata:)

最后一条数据如果并没有ImageMetadata,而是直接 一个 花括号 }  结束,应该怎么匹配呢
发表于 2022-4-7 16:57:18 | 显示全部楼层
chamlien 发表于 2022-4-7 16:53
感谢,如果上面的数据没有换行,正则应该怎么写呢

试试
Highlight code by AuREHelper
(?si)"Post:\w+":\h+({.+?},?)\s*(?="Image|$)


 楼主| 发表于 2022-4-7 17:07:36 | 显示全部楼层

a大这条不行呢
 楼主| 发表于 2022-4-7 17:12:43 | 显示全部楼层
chamlien 发表于 2022-4-7 16:54
最后一条数据如果并没有ImageMetadata,而是直接 一个 花括号 }  结束,应该怎么匹配呢

稍微修改了一下正则:
(?is)(?:"Post:\w+":)(.+?)(?=]\s*})

匹配到的每条数据结尾再手动补上 "]}",也能解决需求了
发表于 2022-4-7 17:13:14 | 显示全部楼层

不可能吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2022-4-7 17:21:31 | 显示全部楼层

原来是java符号要转义,这条是可以的,感谢
发表于 2022-4-7 17:39:54 | 显示全部楼层


我的万能大法

  (?s)"Post:.*?": {(.*?)},\s*"ImageMetadata 



还可行
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-4 00:23 , Processed in 0.079872 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表