Jmeter的正规表达式

上一篇 / 下一篇  2014-08-01 10:19:28 / 个人分类:测试

JMeter使用Apache Jakarta ORO进行模式匹配

可以通过下面的地址对ORO进行更详细的了解:
A summary of the pattern matching characters 
http://jakarta.apache.org/oro/

OROMatcher User‘s guide 
http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html

如果你想查看详细的文档,你可以安装一个全版本的Perl来查看Perl相关的模式匹配文档,因为两者几乎一致。

需要强调的是“contains”和”matches“的不同:
contains意思是正规表达式匹配上了目标的部分/全部字符,例如:alphabet contains ph.b,因为正则表达式会匹配目标的部分字符,这个示例就是正则表达式ph.b matches了alphabet的子串phab(.可以任意匹配一个字符)
matches意思是正则表达式匹配上了目标的全部字符,例如:alphabet matches al.*t (.*可以匹配任意多个字符)

在本例中,相当于完全包装模式的语句:^al.*t$ (^标识匹配开始,$标识匹配结束)

示例:

获取单个字符串

假设你想在一个页面上匹配如下的内容<name="file" value="readme.txt">

那么可以使用: <name=“file” value=(.+?)">

()用于包围要返回的匹配字符串
. 匹配任意一个字符
+ 多次
? 第一个匹配完成后结束匹配

例如上例,如果没有?结尾,那么.+将会在完成第一个>后,继续向下匹配,直到最有一个>为止

其实上面的匹配更严谨一些的话,书写为如下:
<name="file" value="([^"]+)">
其中的[^"]表示除了"符号外的匹配任意字符匹配
然后在JMeter的template里面使用$1$


获取多个值

如果你想同时获得多个匹配值,那么格式如下

仍用上面的示例作为匹配对象 
<name="([^"]+)" value="([^"]+)" 
然后在Jmeter的template里面使用$1$$2$
设置变量名为Test

那么如下的变量将被赋值:
Test 值为file.namereadme.txt
Test_g0 值为 name="file.name" value="readme.txt"
Test_g1 值为 file.name
Test_g2 值为 readme.txt

然后在JMeter中使用:${Test},${Test_g2}......



TAG: Jmeter

 

评分:0

我来说两句

日历

« 2024-04-16  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 150195
  • 日志数: 185
  • 文件数: 6
  • 建立时间: 2007-08-06
  • 更新时间: 2015-01-06

RSS订阅

Open Toolbar