转:详解JMeter正则表达式(1)
1.概览
JMeter中包含范本匹配软件Apache Jakarta ORO 。在Jakarta网站上有一些关于它的文档,例如a summary of the pattern matching characters :
http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html。
另外,还有关于该软件老版本的文档OROMatcher User's guide ,也许会有一些帮助。URL地址:http://www.savarese.org/oro/docs/OROMatcher/index.html。
JMeter的范本匹配与Perl语言的范本匹配类似。一个安装完整的Perl会包含很多关于正则表达式的文档(搜寻perlrequick、perlretut、perlre、perlreref)。
我们有必要分清楚包含(Contains)和匹配(Matches)的差异,它们用于响应断言测试元件:
包含(Contains)意味着正则表达式至少部分匹配目标,例如,'alphabet' 包含 'ph.b.',因为正则表达式匹配其子字符串'phabe'。
匹配(Matches)意味着正则表达式完全匹配目标。例如,'alphabet'匹配'al.*t'。
在这一情况下,它等同于使用^ 和$封装正则表达式,即'^al.*t$'。但是事情并不总是这样。例如,正则表达式'alp|.lp.*'包含于'alphabet',但并不匹配'alphabet'。
原因在于当范本匹配器在'alphabet'中找到序列'alp'后,就会停止尝试其他组合,而且'alp'不同于'alphabet',它不包含'habet'。
不同于Perl,没必要将正则表达式用//封装。
2.实例
1)提取单个字符串
假设测试人员期望匹配Web页面的如下部分:name="file" value="readme.txt">并提取readme.txt。
一个符合要求的正则表达式:
- name="file" value="(.+?)"> 。
上面用到的特殊字符包括如下几个。
( 和 ):封装了待返回的匹配字符串。
.:匹配任何字符。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
如果没有?,在找到第一个">后,会继续寻找,直到最后一个">,这么做很可能不是测试人员期望的。
尽管上面的表达式可以达到目的,但是使用如下表达式更有效率:name="file" value="([^"]+)">,其中[^"]-意味着匹配任何东西(除了")。在这种情况下,匹配引擎在找到第一个右侧"后,就会停止搜索。而上面例子中的匹配引擎会去寻找">。
2)提取多个字符串
假设测试人员期望匹配Web页面的如下部分:name="file" value="readme.txt">,并提取file.name和readme.txt。
一个符合要求的正则表达式:
- name="([^"]+)" value="([^"]+)"
这会创建两个组合,并可用于JMeter正则表达式模板,形如$1$ 和$2$。
JMeter正则表达式提取器会将组合的值放在指定变量中,如图11-2所示。
|
| (点击查看大图)图11-2 JMeter正则表达式提取器 |
转:详解JMeter正则表达式(1)的更多相关文章
- 详解JMeter正则表达式
详解JMeter正则表达式(1) 1.概览 JMeter中包含范本匹配软件Apache Jakarta ORO .在Jakarta网站上有一些关于它的文档,例如a summary of the pat ...
- 转:详解JMeter正则表达式(2)
例如, 引用名称:MYREF. 正则表达式:name="(.+?)" value="(.+?)". 模板:$1$$2$. 不要用/ /封装正则表达式. 如下变量 ...
- 详解JMeter函数和变量(转载)
详解JMeter函数和变量(1) JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var ...
- Java 正则表达式详解_正则表达式
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 详解 Python3 正则表达式(五)
上一篇:详解 Python3 正则表达式(四) 本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些注明和修改 ^_^ 非捕获组和命名 ...
- 详解 Python3 正则表达式(四)
上一篇:详解 Python3 正则表达式(三) 本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些注明和修改 ^_^ 更多强大的功能 ...
- 详解 Python3 正则表达式(三)
上一篇:详解 Python3 正则表达式(二) 本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些批注和修改 ^_^ 模块级别的函数 ...
- 详解 Python3 正则表达式(二)
上一篇:详解 Python3 正则表达式(一) 本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些批注和修改 ^_^ 使用正则表达式 ...
- 详解 Python3 正则表达式(一)
本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些批注和修改 ^_^ 正则表达式介绍 正则表达式(Regular expressio ...
随机推荐
- 使用 IDEA 创建 Maven Web 项目 (一)- 使用IEAD创建Maven项目
创建IDEA项目 单击 Create New Project 按钮,弹出 New Project 对话框. 选择 Maven 选项,单击 Next 按钮. 输入 GroupId.ArtifactId. ...
- PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获(下)
上一节(<4.1 SNIFFER(嗅探器)之数据捕获(上)>)中, 我们讲解了通过Raw Socket的方式来编写Sniffer的基本方法. 本节我们继续来编写Sniffer,只不过使用现 ...
- 详述JavaScript数组
摘要 数组是JavaScript中的常用类型,本文详述了数组的基本知识以及一些常用的数组方法,并对每种方法进行了详细解释 数组定义 用字面量直接定义 var arr=[0,0,0]; //注意,是方括 ...
- C语言之switch
一 switch的语法 switch(表达式){ case 常量表达式1: 代码块1 break; case 常量表达式2: 代码块2 break; case 常量表达式3: 代码块3 break; ...
- 使用highcharts显示mongodb中的数据
1.mongodb数据表相关 # 显示数据库 show dbs # 数据库 use ceshi # 显示表 show tables # 创建集合 db.createCollection('infoB' ...
- Heap Sort
#include<iostream> using namespace std; const int MAX = 1001; int l[MAX]; //Heap Sort void Hea ...
- sql语句实现隐藏手机号码中间四位的方法
1、select REPLACE(mobile,SUBSTR(mobile,4,4), '****') as mobile from tableName 2、select INSERT(mobile, ...
- java zip 批量打包(java.util包和apache.tools包)
/** * 文件批量打包 * @param zipPath 打包路径 * @param files 批量文件 */ public void zipOut(String zipPath,File[] f ...
- Linux的一些简单命令(三)
1.解压缩算法:使用gzip算法进行解压缩, 压缩语法:gzip filename 解压语法:gzip -dv filename 2.解压缩算法:使用bzip2算法进行解压缩, 压缩语法:bz ...
- moodle其他搜集
1.将面包屑的符号换成">>",找到皮肤包里的config.php文件,在最后加入 $THEME->rarrow=">>"; ...