找回密码
 加入
搜索
查看: 1694|回复: 15

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

[复制链接]
发表于 2022-4-12 21:38:03 | 显示全部楼层 |阅读模式
本帖最后由 itzyx 于 2022-4-13 08:48 编辑

源数据如下:
"Average CN0 Trend":{
        "type":"chart",
        "unit":"dB",
        "line":[
            {
                "name":"GPS",
                "points":[
                    {
                        "timestamp":"2020-12-19 06:32:09.000",
                        "value":39.833333333333336
                    },
                    {
                        "timestamp":"2020-12-19 06:32:10.000",
                        "value":40.333333333333336
                    },
                    {
                        "timestamp":"2020-12-19 06:32:11.000",
                        "value":40.666666666666664
                    },
                    {
                        "timestamp":"2020-12-19 06:32:12.000",
                        "value":41.166666666666664
                    },
                    {
                        "timestamp":"2020-12-19 06:32:13.000",
                        "value":41.666666666666664
                    },
                    {
                        "timestamp":"2020-12-19 06:32:14.000",
                        "value":41.666666666666664
                    },
                    {
                        "timestamp":"2020-12-19 06:32:15.000",
                        "value":42.0
                      }
                ]

我想提取"value" 后面的数值,39.833333333333336,40.333333333333336  等等这些,自己尝试了一下,只能把"points":[后面的数据提取,(?si)"Average CN0 Trend".+"GPS".+"points":\[\s*\{(.+?)\]   各位大佬麻烦指点一下,万分感谢!
发表于 2022-4-12 21:51:11 | 显示全部楼层
这不简单?
Highlight code by AuREHelper
"value":(\S+)


 楼主| 发表于 2022-4-12 21:52:06 | 显示全部楼层
本帖最后由 itzyx 于 2022-4-12 21:53 编辑

A大  Average CN0 Trend  GPS  这些关键字需要,我还有其他情况,就列举了这一个
发表于 2022-4-12 21:52:55 | 显示全部楼层
itzyx 发表于 2022-4-12 21:52
A大  Average CN0 Trend  GPS  这些关键字眼需要

  不早说?具体要什么
 楼主| 发表于 2022-4-12 21:54:13 | 显示全部楼层

嘿嘿   我的我的
 楼主| 发表于 2022-4-12 21:59:21 | 显示全部楼层
afan 发表于 2022-4-12 21:52
不早说?具体要什么

"Average CN0 Trend","name":"GPS" 这两个关键字是会变的,比如例子是GPS,我就要统计所有GPS下value的值, 下一个可能就是“GAS”啥的 ,每个情况下的所有value都要统计到
发表于 2022-4-12 22:02:47 | 显示全部楼层
带上name?
(?:name|value)":"?([^"\s]+)

评分

参与人数 1金钱 +40 收起 理由
itzyx + 40 感谢 发哥解答

查看全部评分

发表于 2022-4-12 22:05:22 | 显示全部楼层
itzyx 发表于 2022-4-12 21:59
"Average CN0 Trend","name":"GPS" 这两个关键字是会变的,比如例子是GPS,我就要统计所有GPS下value的 ...

多种情况在源字符串中就要体现,别人就容易懂你的意思。
先用你上面的表达式提取段落,再取值不就行了

评分

参与人数 1金钱 +40 收起 理由
itzyx + 40 正则的知识,对我任重道远啊~

查看全部评分

 楼主| 发表于 2022-4-12 22:17:29 | 显示全部楼层

发哥,是这样  "Average CN0 Trend","name":"GPS" 这两个关键词相当于表头,是会变的,这次我提取"Average CN0 Trend","name":"GPS",下的value数据,下个就可能是提取"Maximum CN0 Trend","name":"GAS"下的value数据
 楼主| 发表于 2022-4-12 22:20:10 | 显示全部楼层
afan 发表于 2022-4-12 22:05
多种情况在源字符串中就要体现,别人就容易懂你的意思。
先用你上面的表达式提取段落,再取值不就行了

了解了,我本来源字符准备说明的,后面又删了,那我试试提取段落,再用正则提取"value"后面的数据
发表于 2022-4-13 00:57:06 | 显示全部楼层
itzyx 发表于 2022-4-12 22:17
发哥,是这样  "Average CN0 Trend","name":"GPS" 这两个关键词相当于表头,是会变的,这次我提取"Avera ...

按照我的理解,你的表头不一样,所以7楼给你的正则带了一个name值,你可以根据name值判断是那个表头的数据。
 楼主| 发表于 2022-4-13 07:59:11 来自手机 | 显示全部楼层
haijie1223 发表于 2022-4-13 00:57
按照我的理解,你的表头不一样,所以7楼给你的正则带了一个name值,你可以根据name值判断是那个表头的数 ...

嗯嗯啊,谢谢发哥,昨晚太晚没来得及回复,问题已经解决,按照A大说的,我先把匹配的一段提取出来,再用正则提取数据,结果可行。之前钻牛角尖了,总想着一步到位。
发表于 2022-4-13 09:12:37 | 显示全部楼层
乍一眼看,是个json文本,但是感觉不全,如果是json,用json解析提取比较好
 楼主| 发表于 2022-4-13 22:29:10 | 显示全部楼层
skysmile 发表于 2022-4-13 09:12
乍一眼看,是个json文本,但是感觉不全,如果是json,用json解析提取比较好

是个js文本,用json解析怎么提取,大佬可否指点一下
发表于 2022-4-14 11:15:47 | 显示全部楼层
itzyx 发表于 2022-4-13 07:59
嗯嗯啊,谢谢发哥,昨晚太晚没来得及回复,问题已经解决,按照A大说的,我先把匹配的一段提取出来,再用 ...

虽然一条表达式也可实现,但更建议取段再取零,虽然如此这般多了一步,但更便于修改与维护。
一次完成并不代表一定会更高效,多次完成也并不代表一定会低效。
这种简单的格式,既无嵌套也无特殊的节,想不出有比正则更简单又高效的方式,包括 Json。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-4 02:07 , Processed in 0.084220 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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