Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法

这篇具有很好参考价值的文章主要介绍了Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

  • 前言
  • 一、Jmeter中使用正则表达式匹配
    • 1、选择 RegExp Tester
    • 2、在线程组------》添加------》后置处理器-------里面添加一个“正则表达式提取器”
  • 二、关于正则表达式提取器里面字段的解释
    • 参数说明
  • 三、进一步解释Jmeter正则表达式提取器中的模板
    • 1、当模板设置为$0$     表示在匹配的结果中随机选择一个
    • 2、使用Jmeter中正则表达式提取器模板匹配举例(详细讲解)
    • 3、补充第二点的内容
    • 4、网上另一种解释(目前没有实操过,先记录)
    • 5、这里自己理解有一种说法
    • 注意
  • 总结

前言

本章节主要讲解正则表达式提取器中的模板的含义和用法。


一、Jmeter中使用正则表达式匹配

步骤:

1、选择 RegExp Tester

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

2、在线程组------》添加------》后置处理器-------里面添加一个“正则表达式提取器”:

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

 Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

 Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

注意:模板选项 和下面的 匹配数字选项 有点重复(理解起来有点重复),有时候可以不填写模板直接填写匹配数字,也是可以成功的。所以并不是两个都的填写。所以才觉得有点重复。

 Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

二、关于正则表达式提取器里面字段的解释

名称 可以随意设置,最好有业务意义
注释 可以随意设置,可以为空
Apply to 应用范围,四个选项
Main sample and sub-samples 匹配范围包括当前父取样器并覆盖至子取样器
Main sample only 匹配范围是当前的父取样器
Sub-sample only 仅匹配子取样器
JMeter Variable 支持对 Jmeter 变量值进行匹配
要检查的响应字段 针对响应字段的不同部分进行匹配,共七个选项
主体 响应数据的主体部分,排除 Header 部分;Http 协议返回请求的主体部分就是 Body
Body(unescaped) 针对替换了转义码的 Body 部分
Body as a Document 返回内容作为一个文档进行匹配
信息头 只匹配信息头部分的内容
URL 只匹配 URL 链接
响应代码 匹配响应代码,比如 HTTP 协议返回码 200 代表成功
响应信息 匹配响应信息,比如处理成功返回“成功”字样,或者“OK”字样
引用名称 匹配出来的信息通过此名称进行访问,${引用名称}
正则表达式 正则表达式提起器使用此串进行信息匹配
模板 正则表达式可以设置多个模板进行匹配,在此指定运用哪个模板,$1$ 指第一个模板,$2$ 指定第二个模板,以此类推,$0$ 表示全文匹配
匹配数字 在匹配过程中往往会出现多个值匹配的青睐,如果匹配数字为0,则代表随机取匹配
默认值 如果没有匹配到可以指定一个默认值

参数说明


名称: 可以随意设置,最好有业务意义
注释: 可以随意设置,可以为空
Apply to: 应用范围,四个选项
Main sample and sub-samples:匹配范围包括当前父取样器并覆盖至子取样器
Main sample only:匹配范围是当前的父取样器
Sub-sample only:仅匹配子取样器
JMeter Variable:支持对 Jmeter 变量值进行匹配
要检查的响应字段: 针对响应字段的不同部分进行匹配,共七个选项
主体:响应数据的主体部分,排除 Header 部分;Http 协议返回请求的主体部分就是 Body
Body(unescaped):针对替换了转义码的 Body 部分
Body as a Document:返回内容作为一个文档进行匹配
信息头:只匹配信息头部分的内容
URL:只匹配 URL 链接
响应代码:匹配响应代码,比如 HTTP 协议返回码 200 代表成功
响应信息:匹配响应信息,比如处理成功返回“成功”字样,或者“OK”字样
引用名称: 匹配出来的信息通过此名称进行访问,${引用名称}
正则表达式: 正则表达式提起器使用此串进行信息匹配
模板: 正则表达式可以设置多个模板进行匹配,在此指定运用哪个模板,$1$ 指第一个模板,$2$ 指定第二个模板,以此类推,$0$ 表示全文匹配
匹配数字: 在匹配过程中往往会出现多个值匹配的青睐,如果匹配数字为0,则代表随机取匹配值;不同模板可能会匹配一组值,那么可以用匹配数字来确定取这一组值中的哪一个;负数取所有值,可以与For Each Controller 一起使用来遍历
默认值: 如果没有匹配到可以指定一个默认值


三、进一步解释Jmeter正则表达式提取器中的模板

下面是各参数值的含义:

参数 释义
引用名称 在HTTP等请求中,引用此数据,需要用到的名称
正则表达式 用于将需要的数据提取出来

模板(一个正则表达式就表示一个模板)

例如:一个句子当中含有3个正则表达式,

就表示有三个模板。

一个句子当中可以写很多个正则表达式

表示使用提取到的第几个值:
$-1$:表示取所有值
$0$:表示随机取值
$1$:表示取第1个
$2$:表示取第二个
以此类推:$n$:表示取第n个
匹配数字(0代表随机) 0 代表随机取值,1 代表全部取值
缺省值 如果正则表达式没有搜找到值,则使用此缺省值

1、当模板设置为$0$     表示在匹配的结果中随机选择一个

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

 Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

2、使用Jmeter中正则表达式提取器模板匹配举例(详细讲解)

例如要提取响应结果里的token字段及sex字段(响应内容为:

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"),提取器如下设置:

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"

在正则表达式里面可以写成:"token":"(.*?)","sex":(.*?),"userName"

正则表达式: 数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,如最上面图的 "token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"这3个就是左右边界,(.*?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)。建议均使用非贪婪匹配,除非特殊情况。

模板: 对应正则表达式提取器类型,样式为:$n$。

若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。

若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,

若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容,即(0),

若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,即(83EEAA887F1D2F1AA1CDA9E1978109920)。

注意:这个模板的意思也就是把正则表达式看成模板,有几个正则表达式,就是几个模板。


匹配数字: 正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。当为 0 时,随机返回匹配的数据。当为 1 时,表示返回匹配结果数组的第一个元素。当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量token_matchNr,在引用时:通过${token_1}的方式来取第1个匹配的内容,${token_2}来取第2个匹配的内容。

缺省值: 匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。正则结果查看:

如何查看提取到了想要的内容呢,这里就需要提到另外一个后置处理器: Debug PostProcessor

该元件就为调试所用,一般用于查看变量值,添加方法同正则表达式提取器。

3、补充第二点的内容:

正则表达式提取器说明:

Apply to: 应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是提取最终那个请求的接口。

要检查的响应字段: 样本数据源。

主体: 接口响应主体内容,一般要提取普通http响应结果的数据,都勾选这个。

信息头:响应头的所有内容。

Request Headers:请求头的所有内容。

  url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数(即只能匹配protocol(协议)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。

  响应代码:http响应代码,如101,200,302,404,501等。

  响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。

引用名称: 其他地方引用时的变量名称,名称只能是一个,引用方法:${token}。如图

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

参考博主:jmeter 正则表达式学习(一)--使用详解_linapursue的博客-CSDN博客

参考博主:Jmeter—正则表达式提取器:模板&匹配数字详解_jmeter正则匹配_zhangkezkzk的博客-CSDN博客

4、网上另一种解释(目前没有实操过,先记录)

举例:有以下这些字段

{

"resCode": "000",

"resMsg": "ok",

"prize": "prize1"

}

{

"resCode": "000",

"resMsg": "ok",

"prize": "prize2"

}

{

"resCode": "000",

"resMsg": "ok",

"prize": "prize3"

}

正则表达式为:"prize": "(.*?)"

这个表达式可以匹配三个prize

现在如果我要拿取第二个prize,也就是要拿到prize2,那么模板的值应该填写:$2$

Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法,Jmeter,jmeter,正则表达式

5、这里自己理解有一种说法:

【不要考虑个人返回体格式是什么,能够看出是能匹配到3个prize,那我填写了$1$表示将规则中第一个括号的模式匹配到的内容赋给变量prize】

因为在这里,匹配了3次,那么相当于这个括号里面的正则表达式被用了3次,$1$这里说的是将规则中第一个括号的模式匹配到的内容,匹配是从上到下的匹配,那么第一次肯定就会匹配到prize1

参考博主:jmeter正则表达式提取html,Jmeter 中正则表达式提取器Regular Expression Extractor_刘二婷ttt的博客-CSDN博客

注意:

在其他例子中,正则表达式第一个或者第n个表达式匹配到的个数并不是唯一一个,那么这个时候,就要利用匹配数字来限定自己到底拿取的是哪一个。
那么这个时候就可以得出结论,匹配数字是可以是进一步的筛选。

参考博主:
Jmeter—正则表达式提取器:模板&匹配数字详解_jmeter正则匹配_zhangkezkzk的博客-CSDN博客

 


总结

本篇文章,主要是对正则表达式的运用。文章来源地址https://www.toymoban.com/news/detail-544336.html

到了这里,关于Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式的神奇世界:表达、匹配和提取

    正则表达式,这个看起来像密林中的迷宫的工具,既神秘又令人着迷。它是编程世界中的一门魔法,有着神奇的能力。你是否曾经在寻找或解析文本时感到束手无策?或许你想要从海量数据中提取特定信息?这正是正则表达式可以派上用场的时候。本文将带你探索这个神奇的

    2024年02月07日
    浏览(43)
  • mysql 正则表达式 提取 指定字符

    eg: 使用正则表达式来进行匹配替换: REGEXP_REPLACE(\\\'需要进行替换的字段‘, ‘被替换的’,‘替换的内容’) eg: 模式 说明 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘n’ 或 ‘r’ 之后的位置。 $ 匹配输入字符串的结束位置。

    2024年02月06日
    浏览(33)
  • java通过正则表达式提取信息

    工具类如下 使用以及结果 下面这个即为data的原文 结果 推荐这个网站,看起来更直观 正则在线 真正比较难的事儿吧,是怎么写这个正则表达式 有的表达式不是不能用,只是在java程序中不好用,怎么办呢,推荐用chatgpt吧,让他来帮你写表达式 第一步,先把文案发出去 第二

    2024年02月16日
    浏览(30)
  • python 正则表达式提取字符串

    1、提取字符串的场景及公式、命令 背景 :目前遇到的场景主要是以某个字符串开始、某个字符串结束,提取中间部分的字符,有的时候需要开始的字符,有时不需要,大概涉及到了4种情况,场景及处理方式如下: 1.1 以某个字符开始、某个字符结束,期待的提取结果 包含

    2024年02月02日
    浏览(43)
  • 【python】网络爬虫与信息提取--正则表达式

            正则表达式是用来简洁表达一组字符串的表达式。是通用的字符串表达框架,简洁表达一组字符串的表达式,针对字符串表达“简洁”和“特征”思想的工具,判断某字符串的特征归属。         用处:表达文本类型的特征;同时查找或替换一组字符串;匹配字符串

    2024年02月19日
    浏览(59)
  • python 自动化数据提取之正则表达式

     前    言 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式 ,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular

    2024年02月14日
    浏览(42)
  • Python正则表达式提取文本中的IP地址

    Python正则表达式提取文本中的IP地址 在Python中,使用正则表达式可以方便地从文本中抽取符合规则的字符串。其中,IP地址是一个常见的需要抽取的内容之一。IP地址通常由四段数字组成,每段数字的取值范围是0~255。下面将演示如何在Python中使用正则表达式抽取文本中的IP地

    2024年02月16日
    浏览(44)
  • VBA之正则表达式(43)-- 从网页中提取指定数据

    实例需求:由网页中提取下图中颜色标记部分内容,网页中其他部分与此三行格式相同。 【代码解析】 第6行代码创建正则对象。 第7行代码设置正则匹配模式。 正则表达式 说明 id=[^]+ 匹配以 id= 开头,后面跟一个或者多个除 之外的任意字符 [^]+#[^]+ 匹配以一个或者多个除

    2024年02月07日
    浏览(40)
  • 正则表达式系列|(以xx开头xx结尾提取、切分、替换)

    章节 第一章链接: 正则表达式系列|(以xx开头xx结尾提取切分) 正则表达式是对字符串操作的一种逻辑公式;作用:检索、替换那些符合某个模式(规则)的文本,可以通过一些设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。 结果 结果 matcher.group(1)表示获取第一

    2024年02月14日
    浏览(26)
  • 【Matlab笔记_15】正则表达式之特殊字符文本位置提取

    目标: 1.提取“ BLT-1-A1.txt ”中第一个’ - ‘前面的所有字符。 2.提取“ BLT-1-A1.txt ”中第一个’ - ‘和第二个’ - ‘中间的所有字符。 3.提取“ BLT-1-A1.txt ”中最后一个’ - ‘和最后一个’ . ‘中间的所有字符。 方法如下: 注: 这个正则表达式的含义是匹配从字符串开始(

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包