您的位置:首页 > 其它

JMeter基础教程2:正则表达式使用

2017-11-07 15:46 246 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: