Jmeter 常用正则表达式实例,多个变量,多个参数如何取?

jmeter官网用户手册 http://jmeter.apache.org/usermanual/

1.包含换行、空格多种字符的多段内容。全部取出来。

用  ([\s\S]*)       0个到任意多个字符

\s 空白符
\S 非空白符
[\s\S]任意字符
[\s\S]* 0个到任意多个字符
[\s\S]*? 0个字符,匹配任何字符前的位置。

 

 2.多个参数写到一个正则提取器

要提取2个参数怎么办?如图:weight   lastUpdate

添加正则,并按如下填写:

 写一个变量,2个提取器,2个模板,模板中间不用分隔符

variables:  weight

Regular E  : "weight":(.*?),"platform":"PC","currentStep":1,"lastUpdate":"(.*?)"}}

Template : $1$$2$

 

打印变量结果:会生成4个变量 ,常用_g1 _g2

1.后缀 _g1  _g2分别表示第1、2个变量

2.没有后缀表示所有变量结果

3.后缀 _g0表示整个正则的字符串和变量结果

${weight}
-----------------weight0
${weight_g0}
------------------weight1
${weight_g1}
-----------weight2
${weight_g2}

输出4个变量的结果:

----------------------weight
12018-06-20T07:51:58.000Z
-----------------weight0
"weight":1,"platform":"PC","currentStep":1,"lastUpdate":"2018-06-20T07:51:58.000Z"}}
------------------weight1
1
-----------weight2
2018-06-20T07:51:58.000Z

-------------weight3
${weight_g3}

 3.Jmeter的一个BUG,正则提取包含中括号需要转义  [  

1.先讲一些java的转义:

在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义,

这些字符是

(    [     {    /    ^    -    $     ¦    }    ]    )    ?    *    +    . 

转义方法为字符前面加上"\\",这样在split、replaceAll时就不会报错了;

如java:

public class Main{
    public static void main(String[] args) {
        // Scanner in = new Scanner(System.in);
        String str1="sfs|abcd";
        String str2="sfs.abcd";
        String str3="sfs&abcd";
        String str4="sfs*abcd";
        String str5="sfs+abcd";
 
        String[] strs1=str1.split("\\|");
        String[] strs2=str2.split("\\.");
        String[] strs3=str3.split("&");
        String[] strs4=str4.split("\\*");
        String[] strs5=str5.split("\\+");
        System.out.println("(1)----------------(符号:|)");
        for(String s:strs1){
            System.out.println(s);
        }
        System.out.println("(2)----------------(符号:.)");
        for(String s:strs2){
            System.out.println(s);
        }
        System.out.println("(3)----------------(符号:&)");
        for(String s:strs3){
            System.out.println(s);
        }
        System.out.println("(4)----------------(符号:*)");
        for(String s:strs4){
            System.out.println(s);
        }
        System.out.println("(5)----------------(符号:+)");
        for(String s:strs5){
            System.out.println(s);
        }
    }
}

输出结果:

2.jmeter正则提取器不需要转义:

如:

 3.如下面路径如包含 [  需要加一个  " \ "

 

posted @ 2017-11-20 10:18  白灰  阅读(2780)  评论(0)    收藏  举报