jmeter正则表达式提取器的用法和正则

本文介绍了如何在JMeter中使用正则表达式提取器处理接口依赖,例如在发布内容接口中需要使用登录接口返回的Token。首先,添加正则表达式处理器作为登录接口的后置处理器,配置提取内容的字段、引用名称、正则表达式、模板和匹配数字。然后,在后续接口请求中使用提取的变量,注意作用域问题。通过在查看结果树中使用Regex Tester验证正则表达式的正确性。本文提供了一种通用的正则表达式方法,并提供了实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们再使用jmeter请求接口时,碰到一些业务流程性的接口改怎么办,比如,我一个发布内容的接口需要用到登录接口返回的token加到请求上去才能发布内容,那在jmeter上该是如何实现的咧?

这里介绍的是jmeter的正则表达式提取器

1,把正则表达式添加到需要提取返回内容的http请求里,添加步骤是,,右键http请求--添加--后置处理器--正则表达式处理器

2,在正则表达式提取器配置设置页里,

         1)要检查的响应字段:相当于是要提取哪个位置的内容数据

        2)引用名称:我们把内容提取出来后要赋值给一个变量,这个变量在jmeter里就是应用名称,注意这里不能出现数字和一些乱七八糟的特殊符号,建议使用英文

        3)正则表达式:代表这我们提取内容的这段正则表达式 (下面内容有详细简绍这个正则表达式如何填写

        4)模板:提取内容的模板,一般是$1$

        5) 匹配数字:设置为 1 ,表示匹配返回数组的第一个元素内容。

        6)缺省值:不要管

        

 

小注意 当配置后后我们就可以再其他地方把我们在正则表达式里设置的变量放到请求body或者是请求头里边了,这里要注意的是作用域的问题  ,假如我们再第一个接口里添加了提取器设置的变量名称,在第二个接口里才设置提取器内容的话,这样在第一个接口是没有数据的,应该这个变量还没有再第二个接口被赋值。。

小注意 当我们使用正则表达式提取器将内容提取出来后就是代入引用,只需要使用 ${引用名称} 这个放在我们需要所提取的的位置就行啦 如 token=${引用名称}

正则表达式:

():要提取的内容
.:匹配任意单个字符串
*: 匹配(*之前的符号)0次或多次
+:匹配(+之前的符号)1次或多次
?:不要太贪婪,在找到第一个匹配项后停止。
.*:匹配连续0个/多个字符
.+:匹配连续1个/多个字符
\ :转义,\.表示匹配字符.本身

小技巧:当我们要验证我们的正则表达式是否正确囊括的内容是否是我们需要的内容时,我们再jmeter里可以验证

1,请求后在查看结果树的页面里,点击我们想要提取数据的那一条结果信息,然后选择regexp tester,会在相应结果下面出现一个文本输入框,在输入框内输入我们的正则表达式后点击右侧的test就能出现我们的匹配内容啦

2,实验出结果,假设我要提取content=“”webkit“”里的webkit这个数据内容,我再输入框里输入正则表达式  ="force-rendering" content="(.+?)"/>,然后可以看到我们的结果已经出来了,数据以及拿到,见下图

 然后我们就可以将我们验证通过的正则表达式  ="force-rendering" content="(.+?)"/>  复制粘贴到我们添加的功能”正则表达式提取器“里的”正则表达式“里面啦。

ps:可能有的朋友会说,我正则表达式不是很熟悉怎么办,不知道该怎样去填写正则表达式,我这里教大家一个方法,就是我写这篇文章所使用的方法,我们讲我需要提取的内容用(.+?)这一个正则来表示,也就是说我们在提取内容时,所使用的正则是  : “需要提取的内容左侧的数据”  (.+?) “需要提取内容右侧的数据”,通过这样的方式就可以了,这种正则基本适用所有,不懂的小伙伴可以去详读这篇文章,在通过对比我这个方法,就能了解啦,如果有还是不了解的,可以留言评论,或者直接私聊,我都在。。

### JMeter 正则表达式提取器 JSON 提取器使用教程 #### 3.1 正则表达式提取器参数详解 正则表达式提取器JMeter 中用于从服务器响应中提取数据的一种组件。该工具利用正则表达式来匹配响应内容并提取其中特定部分的数据[^1]。 - **名称**: 组件的描述性名称,在测试计划树中显示。 - **应用范围**: 可以设置为仅应用于当前采样器或其子级采样器。 - **要分析的内容**: 指定是从主体还是头部或其他位置抽取信息。 - **正则表达式**: 输入用来定义目标模式的正则表达式字符串。 - **模板 (Template)**: 定义如何构建最终输出;默认情况下,`$` 表示第一个捕获组。 - **匹配编号 (Match No.)**: 如果有多个匹配项,则指定哪一个被选作结果;0 随机选取任意一项,负数表示全部返回。 - **缺省值 (Default Value)**: 当没有任何匹配发生时所使用的替代文本。 ```java // 示例 Java 代码展示简单的正则表达式操作 String regex = "(\\d{4})-(\\d{2})-(\\d{2})"; // 匹配日期格式 YYYY-MM-DD Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher("Date is 2023-09-18"); if (matcher.find()) { System.out.println(matcher.group(0)); // 输出整个匹配串 "2023-09-18" } ``` #### 4.1 JSON 提取器参数详解 对于结构化的 JSON 数据来说,JSON 提取器提供了更方便的方式来进行解析提取。此功能允许通过路径查询语言(如 JsonPath)定位到具体的字段或属性,并将其作为变量存储起来供后续请求使用[^2]。 - **名称**: 同上。 - **适用对象**: 类似于正则表达式的选项,决定作用域。 - **JSON Path Expressions**: 编写遵循标准语法的表达式以指向所需节点。 - **默认值**: 若找不到符合条件的结果,默认采用设定好的备用值填充。 ```javascript // JavaScript 实现了一个基本的例子说明如何用 jsonpath 来访问嵌套的对象成员 var data = {"store": {"book":[{"category":"fiction","title":"Harry Potter"},{"category":"non-fiction","title":"Learning Python"}]}}; console.log(data.store.book[0].title); // 打印 Harry Potter ``` #### 应用实例对比 当面对非结构性较强的HTML页面源码或者其他形式松散的文字流时,推荐优先考虑正则表达式方法[^3]。然而如果是API接口调用产生的标准化JSON文档,则应该倾向于选择专门针对此类情况设计优化过的JSON提取手段[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大眼小夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值