0. 正则表达式简介

正则表达式,又称规则表达式(Regular Expression,在代码中通常简写为regex、regexp或RE)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

Jmeter使用正则表达式主要用来从请求结果中提取需要的内容,作为结果校验或下一个接口的入参从而实现参数关联。下面主要介绍Jmeter使用正则表达式提取器的方法。

1. Jmeter正则表达式使用

下面以提取下面测试响应文本中的 “<title>百度一下,你就知道</title>” 里面的 title“百度一下,你就知道”为例:

1.1 新建正则表达式提取器

在Jmeter需要提取数据的HTTP请求上,点击右键-->后置处理器,选择需要的关联方式,如下图有很多种方法可以提取动态变化数据,这里选择正则表达式提取器:

1.2 设置正则表达式提取器

 参数说明:

  (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。

  (2)正则表达式:

    ():括起来的部分就是要提取的字符串,即只返回()内的匹配的字符串

    .:匹配任何字符(换行符除外)

    +:一次或多次

    ?:不要太贪婪,在找到第一个匹配项后停止

  (3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

  (4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0

  (5)缺省值:如果参数没有取得到值,那默认给一个值让它取。

1.3 使用2中获取到的值:

2. 更多示例

2.2 正则表达式常用字符及释义

1. .匹配任意一个单个的字符:比如f.o匹配在'f'和'o'中间的任意字符
2. *用于匹配它左边正则表达式出现0次或0次以上的情况
3. +用于匹配左边的正则表达式至少出现一次的情况
4. ?用于匹配左边的正字表达式出现0次或1次的情况
5. {}括号里可以是单个的值如{N},表示匹配N次出现;也可以是一对值{M,N},表示匹配M次到N次出现
6. 特殊字符: 用\d表示十进制数字,用\w表示整个字符数字的字符集,\s表示空白符
7. 圆括号():对正则表达式进行分组
8. 管道符号(|),它的意思选择被管道符号分隔的多个不同的正则表达式中的一个
9. 从字符串的开头或结尾或单词边界开始匹配(^/$),其中^或\A从字符串开头开始匹配;$或\Z是用来匹配字符串的结尾
10. \b和\B用来匹配单词边界,其中\b匹配的是一个单词边界,\B只匹配出现在一个单词中间的模式
11. 创建字符类([]):使用方括号的正则表达式会匹配方括号里的任何一个字符,比如b[aeiu]t匹配bat,bet,bit,but
12. 指定范围(-)和否定(^):例如A-Z、a-z、0-9分别代表大写字母、小写字母及十进制数字;[^\t\n]表示除TAB制表符及换行符以外的任意字符

2.2 正则表达式中含有转义字符

例如WEB页面中字符为"lable":(1234),需要提取1234字符,由于含有特殊字符(),此时需要使用转移字符\,编写的正则表达式为
"lable":\((\d+?)\),其中\d表示匹配任意0-9数字

2.3 提取多个字符串

假如想匹配WEB页面内容如下:<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>,我们想提取"http://news.baidu.com"和"新闻"。这时,正则表达式应该写成:<a href="(http://.+?)" name=".+?" class=".+?">(.+?)</a>。这样就会创建2个组,分别用于$1$和$2$,如下:

引用名称:param
模板:$1$$2$

变量值如下:
param: http://news.baidu.com新闻
param_g0: <a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
param_g1: http://news.baidu.com
param_g2: 新闻

其中param是返回所有的匹配部分;param_g0是返回匹配的字符串;param_g1是返回匹配的子组1;param_g2是返回匹配的子组2

JMeter基础教程2:正则表达式使用的更多相关文章

  1. Jmeter基础教程图文版(二)- 核心组件

    ⚪Jmeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具.用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域. 它可以用于 ...

  2. JMeter基础教程3:脚本录制篇

    对于一些JMeter初学者来说,录制脚本可能是最容易掌握的技能之一.虽然我不建议录制性能脚本(因为录制的脚本比较混乱,必须要通过二次处理才可正常使用),但有时做总比不做要好,是吧?下面我们详细介绍使用 ...

  3. JMeter基础教程1:若隐若现的参数化

    1. 什么是参数化? 在开始学习JMeter参数化之前,我们先了解下什么是参数化: 参数化是自动化测试脚本的一种常用技巧.简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时指 ...

  4. JMeter基础之一 一个简单的性能测试

    JMeter基础之一 一个简单的性能测试 上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测 ...

  5. 《JavaScript基础教程(第8版)》PDF

    简介:JavaScript基础教程(第8版)循序渐进地讲述了JavaScript及相关的CSS.DOM.Ajax.jQuery等技术.书中从JavaScript语言基础开始,分别讨论了图像.框架.浏览 ...

  6. C#基础回顾:正则表达式

    C#基础回顾:正则表达式 写在前面:本文根据笔者的学习体会结合相关书籍资料对正则表达式的语法和使用(C#)进行基本的介绍.适用于初学者. 摘要:正则表达式(Regular Expressions),相 ...

  7. 【转】Gulp入门基础教程

    Gulp入门基础教程 原文在此 前言最近流行前端构建工具,苦于之前使用Grunt,代码很难阅读,现在出了Gulp, 真是摆脱了痛苦.发现了一篇很好的Gulp英文教程,整理翻译给大家看看. 为什么使用G ...

  8. 1月10日 ruby基础教程,查漏补缺; 2月22日 Exception补充

    https://ruby-doc.org/core-2.5.0/Exception.html 1月20日练习完1,2章. 第一章 初探 ‘’单引号不执行转义符. \t 制表符.\n 换行符. p me ...

  9. 《SQL基础教程》+ 《SQL进阶教程》 学习笔记

    写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQ ...

随机推荐

  1. CSS3中only-child伪类选择器

    <body> <style type="text/css"> //只对li1设置样式 li:nth-child(1):nth-last-child(1){ ...

  2. [51nod1329]路径游戏

    Snuke与Sothe两个人在玩一个游戏.游戏在一个2*N的网格中进行(2行N列),这个网格中的2N个格子不是黑色就是白色.定义,一条有效路径是指一个完全由白色格子构成的序列,这个序列的第一个网格元素 ...

  3. 根据父节点parentid查询节点信息

    ---恢复内容开始--- SELECT * from  tb3 where pid in(select id from tb1 where parentId ='ce2a98d7a04c4bf6a38 ...

  4. solr6.5的安装与配置

    环境介绍 solr 6.5 tomcat8 jdk1.8 win7系统 一.下载solr安装包 下载地址:http://www.apache.org/dyn/closer.lua/lucene/sol ...

  5. js BOM DOM

    BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相关的动作. 简而言之就是使 JavaScript ...

  6. 用thinkphp开启伪静态,用wamp开启很快搞定;但是用phpstudy总是开启失败,为什么?

    https://segmentfault.com/q/1010000005100662 thinkphp应用的根目录下.htaccess中的内容是: <IfModule mod_rewrite. ...

  7. PHP UEditor富文本编辑器 显示 后端配置项没有正常加载,上传插件不能正常使用

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 问题描述 我的编辑器在本地测试的时候没问 ...

  8. 基于TI CC2650的IPv6 over BLE(BLEach) demo

    虽然BLE 5.0协议理论上已经开始支持IPv6了,但是目前市面上还没有可用的实现IPv6通信的BLE产品. 最近在网上看到一个开源的基于contiki系统,在CC2650上实现的IPv6 over ...

  9. 给外行或者刚入门普及一下关于C#,.NET Framework(.NET框架),.Net,CLR,ASP,ASP.Net, VS,以及.NET Core的概念

    一.概念 1. C# :C#是微软公司发布的一种面向对象的.运行于.NET Framework之上的高级程序设计语言. 2..NET Framework(.NET框架):.NET framework ...

  10. 读书笔记之《Java编程思想》

    17. 容器 Set 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素. Set接口不保证维护元素的次序 Map 映射表(关联数组)的基本思想是维护的是键-值(对)关联,因此可以用键来查找 ...