JMeter-正则表达式

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$。 

例如, 

引用名称:MYREF 

正则表达式:name="(.+?)" value="(.+?)"。 

模板:$1$$2$。 

不要用/ /封装正则表达式。 

如下变量的值将会被设定。 

MYREF: file.namereadme.txt。 

MYREF_g0: name="file.name" value="readme.txt"。 

MYREF_g1: file.name。 

MYREF_g2: readme.txt。 

这些变量后续可以在JMeter测试计划中引用,形如${MYREF}、${MYREF_g1}等。 

3.关键字 

正则表达式使用特定字符作为关键字,这些字符对正则表达式引擎有特殊意义。在字符串中使用这些字符必须进行转义(使用反斜杠"\"),目的是将它们当成原始字符,而非正则表达式的关键字。下面是关键字和它们的含义: 

( ):组合。 

[ ]:字符集合。 

{ }:重复。 

+ ?:重复。 

.:任意匹配字符。 

\:转义字符。 

| -:选择符。 

^ $:字符串或行的起始和结尾。 

注意,ORO不支持\Q和\E关键字。 

4.修改器(Modifier) 

理论上修改器可以被放置在正则表达式的任何地方,并被放置的位置开始向后生效。(ORO存在一个BUG,修改器不能放在正则表达式的末尾。尽管修改器在这里不生效)。 

单行(?s)和多行(?m)修改器通常都被放在正则表达式的开头。 

忽略(?i)修改器可以被用来仅仅影响正则表达式的某一部分,例如: 

Match ExAct case or (?i)ArBiTrARY(?-i) case  

由于单行和多行修改器的设置不同,范本匹配的表现也略有不同。请注意,单行和多行操作符之间没有任何关联;它们可以被单独指定。 

1)单行模式 

单行模式只影响关键字符"."。默认情况下,"."可以匹配任何字符(除了换行)。在单行模式下,"."还匹配换行。 

2)多行模式 

多行模式只影响关键字符"^"和"$"。默认情况下,"^"和"$"仅仅匹配字符串的开始和结尾。而在多行模式下,"^"和"$"匹配每一行的开始和结尾。 

posted @ 2017-11-28 12:27  春田花花同学会  阅读(1131)  评论(0编辑  收藏  举报