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. JS高级代码

    JS 的defineProperties 设置多个属性 var book = {}; //用Object.defineProperties()方法设置多个属性 Object.definePropert ...

  2. ------- 当前全球最新的 IPv4 地址池使用报告 -------

    -------------------------------------------------------------- 对于互联网行业相关的从业人员而言,时刻关注 IPv4 地址池的状态此类&q ...

  3. Codeforces 833E Caramel Clouds

    E. Caramel Clouds time limit per test:3 seconds memory limit per test:256 megabytes input:standard i ...

  4. Myeclipse xml标签代码提示,引入schema

    以SpringMVC为例 先引入命名空间 需要配置 xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schema ...

  5. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  6. Flume环境搭建_五种案例

    Flume环境搭建_五种案例 http://flume.apache.org/FlumeUserGuide.html A simple example Here, we give an example ...

  7. 【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因

    初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题.出现如下警告或错误提示: warning: #223-D: function &qu ...

  8. APACHE 服务器开启URL REWRITE模块的方法

    最近做wordpress,发现固定链接总是设置不了.后来发现是由于apache服务器的URL REWIRITE模块没有开启导致. 查询了资料之后终于设置成功,记录下步骤: 1:开启apache的url ...

  9. 微信公众平台宣布增加接口IP白名单提高安全性

    微信公众平台目前已经发布通知在平台接口调用上为了提高安全性需要添加IP白名单并仅允许白名单IP调用. 目前微信公众平台面向开发者主要提供的开发者ID和开发者密钥,在调用时ID和密钥通过检验即可进行调用 ...

  10. window.history.go(-1)返回且刷新页面

    windows窗口对象(历史)history.go(),history.back(),history.forward(). 因为windows对象引用不是必须的.所以windows.history.g ...