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分别代表大写字母、小写字母及十进制数字;[^tn]表示除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

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!