JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

本文详细介绍了如何使用JMeter中的正则表达式提取器从HTTP响应中提取特定数据,包括商品系统编号和销售价格等,并通过具体实例展示了正则表达式、模板和匹配数字之间的关系。

前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)

此文主要对正则表达式提取器的 正则表达式、模板、匹配数字,三者的关系,做进一步的讲解。

截取商品列表响应结果数据中的一段商品数据如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
     "sysNo": "2142717",
     "skuid": "487626525247",
     "productID": "101-006-72958",
     "productTitle": "苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机",
     "price": "556600",
     "activePrice": "",
     "marketprice": "608800",
     "promotionDesc": "A1524、A1586为三网通版,支持移动\/联通\/电信4G\/3G\/2G。找水货?找翻新?没有!易迅网为国行正品代言!!",
     "manufacturerCode": "49",
     "manufacturerName": "苹果(Apple)",
     "evaluationNum": "1717",
     "gradeNum": "48",
     "onlineQty": "597",
     "shippingday": "0t0",
     "gift": 0,
     "promotionType": "0",
     "attribute": "20000000TD-SC< strong >(为保持美观,此行数据有所删除,不影响此文讲解,请知悉!)</ strong >5.5寸三网通版",
     "saleNum": "454",
     "productTypeMasterid": "0",
     "areaCode": "1",
     "classid": "203320",
     "tag": "超薄手机 大屏手机 待机时间长 高清屏 女神手机 拍照功能强 商务手机 外观漂亮 指纹识别 主流潮机",
     "goodsUrl": "http:\/\/item.yixun.com\/item-2142717.html",
     "picUrl": "http:\/\/img3.wgimg.com\/qqbuy\/2295220799\/item-00000000000000000000007188CE4A3F.0.jpg\/200?55DAE367",
     "reachable": "0"
},

参照上述商品信息数据,假定我们需要获取的是商品的系统编号、商品价格,那么我们改如何写呢?对应上述信息获取商品系统编号、商品销售价格,最终的正则表达式如下所示:

单独获取商品系统编号:

单独获取商品销售价格:

执行结果如下所示:

1
2
3
4
5
6
7
8
price=556600
price_g=1
price_g0="price":"556600","
price_g1=556600
sysNo=2142717
sysNo_g=1
sysNo_g0="sysNo":"2142717","
sysNo_g1=2142717

 

在前文的讲述中,正则表达式提取器的模板是匹配正则表达式提取式的控制模板。例如:模板  

中的数字 1 代表取第一个正则提取式的内容,当为0时,为整个正则表达式完整匹配项。那么我们就可以通过模板控制我们选取的提取式,以获取相应的内容,进行相应的后续操作。通过模板控制,单独获取商品系统编号、销售价格的正则表达式提取配置如下所示:

混合单取商品系统编号:

混合单取商品销售价格:

执行结果如下所示:

1
2
3
4
5
6
7
8
9
10
single_price=556600
single_price_g=2
single_price_g0=sysNo":"2142717","skuid":"487626525247","productID":"101-006-72958","productTitle":"苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机","price":"556600","
single_price_g1=2142717
single_price_g2=556600
single_sysNo=2142717
single_sysNo_g=2
single_sysNo_g0=sysNo":"2142717","skuid":"487626525247","productID":"101-006-72958","productTitle":"苹果(Apple)iPhone 6 Plus (A1524) 16GB 金色 移动联通电信4G手机","price":"556600","
single_sysNo_g1=2142717
single_sysNo_g2=556600

 

经过上述的讲解及演示,细心的小主可能已经发现了,在提取相关联的数据时,通过单独提取的方式非常的不方便,而且在数量多的时候,难免出现配置数据不对应的情况,造成所取的关联数据并非关联数据。那么针对此种情况,我们改如何处理呢?通过 上篇文章 及本文前面的讲解,我们知道,既然可以通过模板控制提取内容的选取,那是否可将相关联的需提取的内容同时在一个正则表达式提取器中完成呢?答案是可以的,仅需在引用名称、模板、匹配数字、缺省值 进行相应的配置即可,同时以英文半角字符 “,” 分隔即可。下面就以同时获取系统编号和销售价格为例进行演示:

正则提取器配置如下所示:

执行结果如下所示:

1
2
3
4
5
goodInfo=2142711,558800
goodInfo_g=2
goodInfo_g0=sysNo":"2142711","skuid":"487626066110","productID":"101-006-69384","productTitle":"苹果(Apple)iPhone 6 Plus (A1524) 16GB 深空灰色 移动联通电信4G手机","price":"558800","
goodInfo_g1=2142711
goodInfo_g2=558800

 

附录(1)- JMeter测试脚本:

JMeter - 后置处理器/正则表达式提取器 实例脚本

附录(2)- HTTP请求响应结果:

HTTP请求响应结果数据

 

至此, JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二) 顺利完结,希望此文能够给初学 JMeter 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

<think>好的,我现在需要帮助用户了解JMeter中如何使用正则表达式提取器作为后置处理器。首先,我需要回顾用户提供的引用内容,看看里面有哪些关键点可以利用。 根据引用[2],正则表达式提取器的作用是提取响应数据中的特定内容,这在用户登录或动态数据获取时很有用。引用[3]提到了使用Dummy Sampler模拟返回数据,并用Debug PostProcessor查看结果,这可以作为示例的基础。引用[4]解释了作用范围选项,比如Main sample and sub-samples,这些参数在配置时需要注意。 用户需要的是使用方法和示例,所以步骤应该分点清晰。首先应该介绍基本配置,比如添加位置、字段说明。然后可能需要一个具体的例子,比如用户登录后的token提取,引用[3]中的购票网站例子可以参考。此外,引用[3]还提到如何拆分结果集,这点也可以作为示例之一。 需要注意的是,用户可能对正则表达式语法不太熟悉,可以简要说明常用语法,如(.+?)匹配任意内容,并强调模板的使用。同时,变量的引用方法(如${token})也是关键点,需要提及。 还要确保示例中的步骤具体,比如使用Dummy Sampler模拟响应,配置正则表达式提取器,用Debug Sampler检查变量,以及如何在后续请求中使用变量。这些步骤在引用[3]中都有涉及,可以整合进来。 最后,常见问题部分可以参考引用[4]的作用范围设置,比如作用域选错导致提取不到数据,或者正则表达式不准确。这部分能帮助用户避免常见错误。 总结一下,回答的结构应该是:简介、使用步骤、示例演示、常见问题,然后生成相关问题。需要确保LaTeX格式正确,行内公式用$...$,独立公式单独成段。同时引用标注要正确,比如在提到作用范围时引用[^4],示例部分引用[^3]。</think>JMeter后置处理器中的正则表达式提取器用于从服务器响应中提取动态数据,常用于接口测试的参数关联。以下为详细使用方法和示例: ### 一、正则表达式提取器配置步骤 1. **添加组件** 右键点击HTTP请求 -> 添加 -> 后置处理器 -> 正则表达式提取器 2. **核心字段说明** - 引用名称:自定义变量名(如`token`) - 正则表达式:编写匹配规则(如`"token":"(.+?)"`) - 模板:`$1$`表示提取第一个捕获组 - 匹配数字:`0`随机,`1`第一个匹配项 - 缺省值:匹配失败时的默认值 $$正则表达式公式示例:\\ R = \{(a,b) \mid a \in A,\ b = f(a)\} \quad \text{表示响应数据的映射关系}$$ ### 、示例演示:登录token提取 1. **模拟登录响应** 使用Dummy Sampler返回模拟数据: ```json {"code":200,"data":{"token":"dXNlcjE6MTIzNDU2"}} ``` 2. **配置正则表达式提取器 - 引用名称:`token` - 正则表达式:`"token":"(.+?)"` - 模板:`$1$` - 作用范围选择`Main sample only` 3. **调试验证 添加Debug PostProcessor查看`token=${token}`的提取结果 4. **跨请求调用 在后续HTTP请求头中使用`${token}`变量 ### 三、常用正则语法 | 语法 | 说明 | 示例 | |-----------|------------------------|-------------------| | `(.+?)` | 非贪婪匹配任意字符 | `id=(.+?)&` | | `\d+` | 匹配数字 | `orderNo=(\d+)` | | `.*?` | 跨行匹配 | `total:(.*?)USD` | ### 四、常见问题处理 1. **提取失败检查** - 确认作用范围是否包含目标响应 - 检查正则表达式是否包含捕获组`()` - 使用View Results Tree查看原始响应 2. **多值处理** 当匹配多个值时,通过`${var_1}`,`${var_2}`访问,或设置匹配数字为`-1`获取全部匹配项
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值