jmeter中正则表达式提取数据的使用


在这里插入图片描述

相关控件

常见的如 jmeter 中的正则表达式提取器,JSON 提取器等

变量名

设置一个变量名,假如为 token

  • 如果正则只用提取一组数据,且正则只匹配到了一个,我们直接使用${token}即可正常提取数据,${token_g0}表示把正则中除小阔号之外的字符串也写了进来,这个写法在下面可以类比使用
  • 如果正则只用提取一组数据,但是可以匹配多个,我们使用${token_1}${token_2}…的形式来匹配提取到的整个数组的数据,${token_g}表示提取一共有多少个被正则匹配了的数据
  • 如果正则要提取两组数据,正则只匹配到了一次,我们可以使用${token_g1}${token_g2}来提取两组数据
  • 如果正则要提取两组数据,正则可以匹配到多次,我们可以使用${token_1_g1}${token_2_g1}…和${token_1_g2}${token_2_g2}…的形式来提取各组中第几个匹配到的数据,且要注意的是${token_2_g1}可不能写成${token_g1_2},一定要把第几个写在前面,把第几组写在后头!

正则表达式

常规的正则表达式,小括号包裹着为要提取的数据

支持基础正则和扩展正则

不得不提及的是 jmeter 中\会起到转义的作用,因此如果响应体中存在\注意需要使用\\将反斜杠进行转义才行!比如要匹配\"Web这样的字符串,我们正则写成\"Web这样就会匹配不到,它会把反斜杠识别成转义字符,这样写等同于去匹配"Web了,那我还不如直接"Web这样写就行了,所以想把反斜杠也算进字符串我们只能这么写\\"Web

匹配到了几轮正则怎么看呢,通过这种形式${token_matchNr}即可

这里支持(?s)写在正则前表示忽视换行符,这样在匹配响应结果几段数据时候可以成功匹配上,否则(.*?)常规的这种写法句点是无法识别换行符的!

不得不提及一句,beanshell 中的 matches 方法需要写完全匹配的正则,比如需要写成^.*?abc.*$而不能只写abc这样是匹配不到的!

模板

正则中一个小括号包裹着的就是一个要提取的数据,如果一个正则中有两个小括号,那么模板中需要写$1$,$2$,或者写成$1$$2$的形式也是可以的

如果有多个正则匹配的括号,但是模板我们只写了$2$,$5$,那么我们可以${token_1_g2}${token_1_g5}取到各自组的数据,如果想把第二个正则和第五个正则都取出来则使用${token_1}即可

匹配第几个

  • 写的正则假如可以一直往后匹配,可以匹配很多个,这里写数字 n 表示只取第 n 个结果
  • 写 0 表示随机第几个
  • 写 -1 表示取到所有的数据

使用提取的数据

我们使用 json 提取器或者正则提取器提取之后

作用域问题

值得注意的是${token_g1}提取数据可以跨越控制器,但是无法跨越线程组使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

abcnull

您的打赏是我创作的动力之一

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

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

打赏作者

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

抵扣说明:

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

余额充值