【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. 一条正则替代多个提取器,精简脚本、降低维护成本,适配绝大多数接口场景。
相关推荐
糖果店的幽灵5 天前
软件测试接口测试从入门到精通:JMeter接口测试
软件测试·jmeter·接口测试·压力测试·性能测试
1candobetter6 天前
JMeter 性能压测监控实战
jmeter
wenying_443237447 天前
软件测试—JMeter—跨线程组关联
jmeter·压力测试
川石课堂软件测试7 天前
UI自动化测试|下拉选择框&弹出框&滚动条操作实践
开发语言·python·jmeter·ui·docker·单元测试·harmonyos
测试199810 天前
Jmeter性能压测:TPS与QPS
自动化测试·软件测试·python·jmeter·测试用例·压力测试·性能测试
川石课堂软件测试10 天前
UI自动化测试|XPath元素定位实践
功能测试·测试工具·jmeter·microsoft·ui·postman·harmonyos
wenying_4432374410 天前
软件测试—Jmeter后置处理器—XPath提取器
jmeter
wenying_4432374411 天前
软件测试—Jmeter后置处理器—正则表达式提取器
jmeter·压力测试