itzyx 发表于 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*\{(.+?)\]   各位大佬麻烦指点一下,万分感谢!

afan 发表于 2022-4-12 21:51:11

这不简单?

Highlight code by AuREHelper
"value":(\S+)


itzyx 发表于 2022-4-12 21:52:06

本帖最后由 itzyx 于 2022-4-12 21:53 编辑

afan 发表于 2022-4-12 21:51
这不简单?
A大Average CN0 TrendGPS这些关键字需要,我还有其他情况,就列举了这一个

afan 发表于 2022-4-12 21:52:55

itzyx 发表于 2022-4-12 21:52
A大Average CN0 TrendGPS这些关键字眼需要
不早说?具体要什么

itzyx 发表于 2022-4-12 21:54:13

afan 发表于 2022-4-12 21:52
不早说?

嘿嘿   我的我的:face (25):

itzyx 发表于 2022-4-12 21:59:21

afan 发表于 2022-4-12 21:52
不早说?具体要什么

"Average CN0 Trend","name":"GPS" 这两个关键字是会变的,比如例子是GPS,我就要统计所有GPS下value的值, 下一个可能就是“GAS”啥的 ,每个情况下的所有value都要统计到

haijie1223 发表于 2022-4-12 22:02:47

带上name?
(?:name|value)":"?([^"\s]+)

afan 发表于 2022-4-12 22:05:22

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

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

itzyx 发表于 2022-4-12 22:17:29

haijie1223 发表于 2022-4-12 22:02
带上name?

发哥,是这样"Average CN0 Trend","name":"GPS" 这两个关键词相当于表头,是会变的,这次我提取"Average CN0 Trend","name":"GPS",下的value数据,下个就可能是提取"Maximum CN0 Trend","name":"GAS"下的value数据

itzyx 发表于 2022-4-12 22:20:10

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

了解了,我本来源字符准备说明的,后面又删了,那我试试提取段落,再用正则提取"value"后面的数据

haijie1223 发表于 2022-4-13 00:57:06

itzyx 发表于 2022-4-12 22:17
发哥,是这样"Average CN0 Trend","name":"GPS" 这两个关键词相当于表头,是会变的,这次我提取"Avera ...
按照我的理解,你的表头不一样,所以7楼给你的正则带了一个name值,你可以根据name值判断是那个表头的数据。

itzyx 发表于 2022-4-13 07:59:11

haijie1223 发表于 2022-4-13 00:57
按照我的理解,你的表头不一样,所以7楼给你的正则带了一个name值,你可以根据name值判断是那个表头的数 ...

嗯嗯啊,谢谢发哥,昨晚太晚没来得及回复,问题已经解决,按照A大说的,我先把匹配的一段提取出来,再用正则提取数据,结果可行。之前钻牛角尖了,总想着一步到位。

skysmile 发表于 2022-4-13 09:12:37

乍一眼看,是个json文本,但是感觉不全,如果是json,用json解析提取比较好

itzyx 发表于 2022-4-13 22:29:10

skysmile 发表于 2022-4-13 09:12
乍一眼看,是个json文本,但是感觉不全,如果是json,用json解析提取比较好

是个js文本,用json解析怎么提取,大佬可否指点一下

afan 发表于 2022-4-14 11:15:47

itzyx 发表于 2022-4-13 07:59
嗯嗯啊,谢谢发哥,昨晚太晚没来得及回复,问题已经解决,按照A大说的,我先把匹配的一段提取出来,再用 ...

虽然一条表达式也可实现,但更建议取段再取零,虽然如此这般多了一步,但更便于修改与维护。
一次完成并不代表一定会更高效,多次完成也并不代表一定会低效。
这种简单的格式,既无嵌套也无特殊的节,想不出有比正则更简单又高效的方式,包括 Json。
页: [1] 2
查看完整版本: 【已解决】求取一条正则提取数据