开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: guipux
收起左侧

[其它求助] 正则表达式提取的文本对不上,请教

[复制链接]

结帖率:100% (1/1)
发表于 3 天前 | 显示全部楼层   江西省南昌市

你发的两个文本都不一样,我那个表达式取出不"rtd_value",文本中都没有

补充内容 (2026-4-11 15:08):
“{"pollutant_code":"B02","cou_value":"52671.229","min_value":"12.726","max_value":"16.460","avg_value":"14.631","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null...

补充内容 (2026-4-11 15:15):
还一个问题,你要明白正则的机制是什么,要不然以后你还会卡BUG
回复

使用道具 举报

结帖率:89% (8/9)

签到天数: 6 天

 楼主| 发表于 3 天前 | 显示全部楼层   浙江省杭州市
RainCharm 发表于 2026-4-11 15:07
你发的两个文本都不一样,我那个表达式取出不"rtd_value",文本中都没有

补充内容 (2026-4-11 15:08):

发错文本了不好意思……
我现在是把mp_id单独识别的:
正则.创建 (“mp_id.:.(.*?).,.)
正则.创建 (“pollutant_code.:.(.*?).,.+?rtd_value.:.(.*?).,.”, )
俩正则合一起,识别到的pollutant_code全都是S05

{"pollutant_code":"004","min_value":null,"rtd_value":"0.730","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"0.495","max_zs":null,"flag":"N"},{"pollutant_code":"902","min_value":null,"rtd_value":"1117.49","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"901","min_value":null,"rtd_value":"1123.37","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"}]},{"id":"3306000006023520260406200100","mp_id":"33060000060235","data_time":"2026-04-06 20:01:00","created_time":"2026-04-06 20:02:20","updated_time":"2026-04-06 20:02:20","values":[{"pollutant_code":"S05","min_value":null,"rtd_value":"27.57","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S08","min_value":null,"rtd_value":"-0.399","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"B02","min_value":null,"rtd_value":"17.34","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S02","min_value":null,"rtd_value":"19.70","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},

{"pollutant_code":"004","min_value":null,"rtd_value":"0.740","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"0.532","max_zs":null,"flag":"N"},{"pollutant_code":"902","min_value":null,"rtd_value":"1126.53","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"901","min_value":null,"rtd_value":"1127.66","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"}]},{"id":"3306000006023520260406200400","mp_id":"33060000060235","data_time":"2026-04-06 20:04:00","created_time":"2026-04-06 20:05:20","updated_time":"2026-04-06 20:05:20","values":[{"pollutant_code":"S05","min_value":null,"rtd_value":"27.02","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S08","min_value":null,"rtd_value":"-0.384","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"B02","min_value":null,"rtd_value":"16.95","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S02","min_value":null,"rtd_value":"19.08","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S01","min_value":null,"rtd_value":"7","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S03","min_value":null,"rtd_value":"121.64","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"008","min_value":null,"rtd_value":"3.620","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"2.598","max_zs":null,"flag":"N"},{"pollutant_code":"001","min_value":null,"rtd_value":"0.335","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"0.239","max_zs":null,"flag":"N"},{"pollutant_code":"003","min_value":null,"rtd_value":"65.400","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"46.711","max_zs":null,"flag":"N"},{"pollutant_code":"002","min_value":null,"rtd_value":"7.460","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"5.328","max_zs":null,"flag":"N"},{"pollutant_code":"004","min_value":null,"rtd_value":"0.720","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"0.514","max_zs":null,"flag":"N"},{"pollutant_code":"902","min_value":null,"rtd_value":"1126.46","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"901","min_value":null,"rtd_value":"1128.40","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"}]},{"id":"3306000006023520260406200500","mp_id":"33060000060235","data_time":"2026-04-06 20:05:00","created_time":"2026-04-06 20:06:20","updated_time":"2026-04-06 20:06:20","values":[{"pollutant_code":"S05","min_value":null,"rtd_value":"27.31","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S08","min_value":null,"rtd_value":"-0.380","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"B02","min_value":null,"rtd_value":"16.98","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S02","min_value":null,"rtd_value":"19.12","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S01","min_value":null,"rtd_value":"6.95","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"S03","min_value":null,"rtd_value":"120.21","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":null,"max_zs":null,"flag":"N"},{"pollutant_code":"008","min_value":null,"rtd_value":"3.700","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"2.640","max_zs":null,"flag":"N"},{"pollutant_code":"001","min_value":null,"rtd_value":"0.327","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"0.233","max_zs":null,"flag":"N"},{"pollutant_code":"003","min_value":null,"rtd_value":"66.850","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"47.588","max_zs":null,"flag":"N"},{"pollutant_code":"002","min_value":null,"rtd_value":"16.030","max_value":null,"cou_value":null,"min_zs":null,"rtd_zs":"11.411","max_zs":null,"flag":"N"}
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 14 天

发表于 3 天前 | 显示全部楼层   江西省南昌市
guipux 发表于 2026-4-11 15:18
发错文本了不好意思……
我现在是把mp_id单独识别的:
正则.创建 (“mp_id.:.(.*?).,.)

分开写下,分上下  ,你没有师傅 或 老师 吧!他们非要吐上几口老血才能镇住你。。。。。自己慢慢学吧
回复

使用道具 举报

结帖率:89% (8/9)

签到天数: 6 天

 楼主| 发表于 3 天前 | 显示全部楼层   浙江省杭州市
RainCharm 发表于 2026-4-11 16:00
分开写下,分上下  ,你没有师傅 或 老师 吧!他们非要吐上几口老血才能镇住你。。。。。自己慢慢学吧 ...

没有,自学
回复

使用道具 举报

签到天数: 8 天

发表于 昨天 22:11 | 显示全部楼层   福建省宁德市
问题分析:您的正则表达式 `mp_id.:.(.*?).,.+?pollutant_code.:.(.*?).,.+?rtd_value.:.(.*?).` 可能失败的原因是:

1. JSON 数据中 mp_id 和 pollutant_code 不在同一层级,mp_id 在 data 数组的每个对象顶层,而 pollutant_code 在 values 数组内部
2. 中间可能有换行符或其他字符导致 `.+?` 无法匹配

建议解决方案:
1. 使用 JSON 解析库而不是正则,更可靠
2. 如果必须用正则,可以分步提取:先提取每个 data 对象的 mp_id,再在其 values 数组中提取 pollutant_code 和 rtd_value
3. 或者尝试更灵活的正则:`"mp_id":"([^"]+)"[\s\S]*?"pollutant_code":"([^"]+)"[\s\S]*?"rtd_value":"([^"]+)"`

使用 `[\s\S]*?` 代替 `.+?` 可以匹配包括换行符在内的所有字符。
回复

使用道具 举报

签到天数: 14 天

发表于 9 小时前 | 显示全部楼层   河南省许昌市
看不懂你要匹配什么  
回复

使用道具 举报

结帖率:89% (8/9)

签到天数: 6 天

 楼主| 发表于 2 小时前 | 显示全部楼层   浙江省杭州市
bttp0059 发表于 2026-4-14 13:43
看不懂你要匹配什么

匹配标红的数据,能行吗?


{"code":"200","msg":"调用成功","data":[{"id":"33060000060213520260406000000","mp_id":"330600000602135","data_time":"2026-04-06 00:00:00","created_time":"2026-04-06 01:00:38","updated_time":"2026-04-06 01:00:38","values":[{"pollutant_code":"S05","cou_value":null,"min_value":"19.710","max_value":"29.130","avg_value":"24.939","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":null,"mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"S08","cou_value":null,"min_value":"-0.406","max_value":"-0.347","avg_value":"-0.380","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":null,"mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"B02","cou_value":"52671.229","min_value":"12.726","max_value":"16.460","avg_value":"14.631","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":"","mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"S02","cou_value":null,"min_value":"13.878","max_value":"19.145","avg_value":"16.439","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":null,"mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"S01","cou_value":null,"min_value":"5.747","max_value":"10.272","avg_value":"7.747","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":null,"mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"S03","cou_value":null,"min_value":"131.377","max_value":"132.842","avg_value":"132.078","min_zs":null,"max_zs":null,"avg_zs":null,"wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":null,"mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"008","cou_value":"0.057","min_value":"0.750","max_value":"1.390","avg_value":"1.084","min_zs":"0.550","max_zs":"1.267","avg_zs":"0.818","wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":"60","mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},{"pollutant_code":"001","cou_value":"0.010","min_value":"0.132","max_value":"0.255","avg_value":"0.189","min_zs":"0.099","max_zs":"0.205","avg_zs":"0.143","wc_min":null,"wc_avg":null,"wc_max":null,"outlet_standard":"30","mstatus":"0","sstatus":"0","estatus":"0","astatus":"0","flag":"N"},
回复

使用道具 举报

签到天数: 14 天

发表于 1 小时前 | 显示全部楼层   河南省许昌市
guipux 发表于 2026-4-14 20:19
匹配标红的数据,能行吗?

VX截图_20260414211336.png


你给的JSON文本不完整  只能暂时用正则,  正因为你的内容不完整mp_id只有一个只能分两次匹配了,  又因为你取的值不是null又需要清洗一下文本
  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
正则正则表达式类 
i整数型 
清洗内容文本型 
正则.创建 ( #mp_id匹配, 编辑框1.内容, , , , )
计次循环首 (正则.取匹配数量 (), i)
编辑框2.加入文本 (正则.取子匹配文本 (i, 1, ))
处理事件 ()
计次循环尾 ()
正则.创建 ( #规则, 编辑框1.内容, , , , )
计次循环首 (正则.取匹配数量 (), i)
清洗内容 = 子文本替换 (正则.取子匹配文本 (i, 3, ), “null”, “”, , , )
清洗内容 = 子文本替换 (清洗内容, #引号, “”, , , )
编辑框3.加入文本 (正则.取子匹配文本 (i, 1, )“    ” + 正则.取子匹配文本 (i, 2, )“    ” + 清洗内容 + #换行符 )
处理事件 ()
计次循环尾 ()

至于正则规则就简单了  
.版本 2


mp_id匹配:


mp_id":"(\d+)"


规则:


pollutant_code":"(.*?)".*?avg_value":"(.*?)".*?avg_zs":(.*?),


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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