转:详解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 ...
随机推荐
- Java消息队列-Spring整合ActiveMq
1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...
- 仿Iconfont-阿里巴巴矢量图标库 搜索动画
效果图如下 style <Style x:Key="BtnSearch" TargetType="{x:Type Button}"> <Set ...
- ruby操作mongo DB
web自动化中,对操作日志功能进行验证(操作日志存在mongoDB中). 为了避免前面操作产生的日志影响结果校验,我们需要先清除之前的所有操作日志. require 'mongo' host = '1 ...
- Jquery中toggle的用法详情
jquery ----toggle([speed],[easing],[fn]) 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的click事件 如果元素是可见的,切换为隐藏的:如果元素是隐藏 ...
- sublime3下载安装及常用插件
之前与学习前端有关的软件都安装在了实验室电脑上,最近由于要放寒假(也许我寒假回去会学习呢),于是得在笔记本电脑上重新安装一遍.几个软件各种出错,花了一下午才安装好,必须记录下来啊! 这篇文章主要介绍s ...
- 【UOJ #280】【UTR #2】题目难度提升
http://uoj.ac/problem/280 非常难想的贪心,用set\(O(nlogn)\). 调了一天qwq. 题解 #include<set> #include<cstd ...
- angularjs的懒加载
1.angularJS懒加载依赖模块 //设置 .config [ '$ocLazyLoadProvider' ($ocLazyLoadProvider) -> # We configure o ...
- java 文件下载支持中文名称
/** * 文件下载 * @param filePath 文件路径 * @param fileName 文件名称 */ public void download(String filePath,Str ...
- System.Data.DbType和数据库映射关系
有如下类型的映射对照: System.Data.SqlClient.SqlDbType System.Data.OleDb.OleDbType System.Data.Odbc.OdbcType S ...
- 为jEasyUi的日期控件添加一个“清空”按钮----通过修改1.4的easyui.min.js
为 jQuery EasyUI 1.4 的datebox或datetimebox添加一个清空按钮 使用场景:为用户指定了日期的格式,且日期可以为空 修改语言包easyui-lang-zh_CN.js ...