【JMeter 高阶】正则提取器万能匹配 gsdm、czygsdm、ddgsdm 同后缀字段

🍉 一、前言

日常做 JMeter 接口自动化、性能测试时,经常遇到一类命名规则高度相似的 JSON 字段:

  • gsdm
  • czygsdm
  • ddgsdm
  • xxxgsdm

共同点:固定后缀是 gsdm,前缀随意不固定

业务痛点:

  1. 每个字段单独写一个正则提取器,脚本臃肿、难维护;
  2. 接口响应同时存在 gsdmczygsdm 多个同后缀字段,需要灵活支持:取第一个、单独取值、全部批量提取;
  3. 原生固定正则只能匹配固定字段,无法模糊匹配通用规则。

本文分享一条万能正则 ,一次性适配所有以 gsdm 结尾的字段,零基础直接照搬配置即可使用。


🥝 二、普通固定正则的缺点

常规写法只能精准匹配单个字段:

复制代码
"gsdm":"(.*?)"

缺点很明显:

  • 只能提取 gsdm,匹配不了 czygsdmddgsdm
  • 每新增一个带前缀的 gsdm 字段,就要新增一个正则提取器;
  • 脚本冗余,后期维护成本极高。

🍎 三、万能正则表达式及逐字详解

3.1 通用万能正则

复制代码
"(\w*gsdm)":"(.*?)"

3.2 逐字符通俗易懂拆解

  1. " 匹配 JSON 字段开头的双引号。

  2. \w*

  • \w 代表:字母、数字、下划线
  • * 代表:匹配 0 个或多个

合起来含义: 前缀可有可无,任意字符都能匹配

  • 无前缀:gsdm
  • 有前缀:czygsdmddgsdmabc123gsdm 全部兼容
  1. gsdm 固定后缀关键字,限定必须以 gsdm 结尾。

  2. ":" 匹配 JSON 字段名与值之间的冒号和前引号。

  3. (.*?)

  • 小括号 ()捕获组,专门用来保存我们要提取的值
  • .*?:非贪婪匹配,精准取值,不会跨行乱匹配

🍓 四、捕获组与模板 $ 符号怎么用

正则里有两个捕获括号组

  1. 第一组:(\w*gsdm) → 匹配字段名称
  2. 第二组:(.*?) → 匹配字段值(我们真正要用的数据)

✅ 取值关键:

  • 要拿字段值 :模板填 $2$
  • 要拿字段名 :模板填 $1$

业务场景 99% 都是填:$2$


🍑 五、JMeter 正则提取器完整配置

配置项 填写内容
引用名称 gsdm_val
正则表达式 "(\w*gsdm)":"(.*?)"
模板 $2$
匹配数字 1 /-1(按业务选)
缺省值 NOT_FOUND

匹配数字参数说明

  • 填 1 :只取第一个匹配到的 gsdm 值
  • 填 -1 :提取所有匹配项,自动生成数组

🥭 六、多字段同时存在的场景处理

示例 JSON 响应:

复制代码
"gsdm":"202306281001",
"czygsdm":"202306281002"

场景 1:只取最先出现的第一个

匹配数字填:1 引用取值:${gsdm_val}

场景 2:全部提取,分开使用

匹配数字填:-1 取值方式:

复制代码
${gsdm_val_1}   第一个匹配值
${gsdm_val_2}   第二个匹配值
${gsdm_val_matchNr}  匹配总数

场景 3:只想单独提取某一个字段

只提取原生 gsdm:

复制代码
"gsdm":"(.*?)"

模板:$1$

只提取 czygsdm:

复制代码
"czygsdm":"(.*?)"

模板:$1$


🍇 七、兼容不规范 JSON 进阶正则

有些接口格式不标准,key 和冒号中间有空格,用这个兼容版:

复制代码
"(\w*gsdm)"\s*:\s*"(.*?)"

\s* 自动忽略任意空格、制表符,适配不标准 JSON 报文。


🥥 八、总结

  1. \w*gsdm 实现模糊匹配,完美兼容 gsdm、czygsdm、ddgsdm 所有同后缀字段;
  2. 正则两个捕获组,业务取值固定用 $2$
  3. 匹配数字 1 取单个值,-1 批量提取为数组;
  4. 一条正则替代多个提取器,精简脚本、降低维护成本,适配绝大多数接口场景。
相关推荐
原来是猿2 小时前
安装JMeter
jmeter
查拉图斯特拉面条3 小时前
JMeter 兼容整数 / 小数金额断言方案:JSONPath 转为 JSR223 Groovy 断言实战
jmeter
1candobetter1 天前
JMeter 常见功能在调试阶段与正式压测阶段的使用建议
jmeter·压力测试
Demon1_Coder1 天前
微服务-jmeter
jmeter
BullSmall2 天前
JMeter AI 插件
人工智能·jmeter
BullSmall2 天前
JMeter插件变灰?3步解决FeatherWand问题
jmeter
海的透彻3 天前
jmeter预制处理器JSR223-加解密
开发语言·jmeter·sm2·jsr233
oh-pinpin3 天前
【jmeter】-脚本-文件上传接口实现
jmeter