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.如下面路径如包含 [ 需要加一个 " \ "


浙公网安备 33010602011771号