jmeter正则表达式,萌新入门篇

@@@@@@@@@@@@

透过现象看本质 

  jmeter中正则表达式对我们来说,就是一个工具,他可以帮助我们做的事就是从一堆数据中截取出我们想要的字段,比如从setcookie:DERF12456DASFD421;/path这个字段中截取DERF12456DASFD421这一部分的内容,那么如何截取,思路就是:从setcookie:开始一直到;/path之前的内容,就是我们要截取的内容,好,有了这个思路,我们就要考虑如何让计算机代替我们做这个事情。首先了解一下正则表达式几个基础语法:

  “()”:括号表示一个匹配的开始和结束。在括号里面的就是需要匹配的具体内容

  “.”:表示匹配一个除了换行的任意字符,类似数据库的*,他代表任意字符

  “+”:表示匹配一次或者多次

  “?”:表示尽量少重复

  如果(.+?)连起来的意思就是:尽可能不重复的匹配除了换行的任意字符一次或者多次。针对上面的字符串可以写一个这样的表达式setcookie:(.+?);/path,执行之后程序作了什么呢?程序会开始找“setcookie:”这个字段,如果找到了,则开始执行()中的内容。括号中是“尽可能不重复的匹配除了换行的任意字符一次或者多次”,则会找到“D”,然后没有结束,因为要匹配多次,所以会接着找“E”。依次重复,直到系统找到“;/path”这个字段,然后这期间匹配的内容就是正则表达式找到的内容。很明显“setcookie:”和“;/path”字段之间的多个字符是“DERF12456DASFD421”,所以最终会返回给我们“DERF12456DASFD421”这个字符串,这就是setcookie:(.+?);/path这个表达式这一次的工作内容。

休息分割线------------------------------------------

  如果这部分你读懂了,能看懂(.+?)是什么意思了,恭喜你,你有着不同常人的天赋,因为正则表达式其实是很难理解的,(.+?)只是其中最最简单的一个部分,不过对于目前我们的工作来说够用了,大部分时候只需要在要匹配的字段开头和结尾之间加上(.+?)就可以匹配到我们想要的内容了。

  理解了正则表达式的工作机制后,我们就要将其用到jmeter中,添加-后置处理器-正则表达式

jmeter正则表达式,萌新入门篇

比如需要提取登录后返回的cookie值,则需要将其放置在登陆请求后面或者里面,然后我们找cookie的开始标识和结束标识,不难发现,我的系统中cookie总是以Set-Cookie: 字段开始,以; path=/字段结束,所以我要取这两个字段之间的内容作为我的cookie值,正则表达式为:Set-Cookie: (.+?); path=/,这样就可以提取出登录的cookie值了

  那么jmeter正则表达式具体怎么用呢,首先先来分析一下jmeter中的正则表达式的内容

  Apply to:正则表达式应用范围

  要检查的响应字段:即我们从哪里取截取数据

  引用名称:等于变量名,正则表达式提取出来后在其他地方用什么名字引用他,你可以随便起名字,尽量英文,叫jitui都可以

  正则表达式:即正则表达式内容

  模板:有时候我们的正则表达式中不止一个(),前面说了()表示匹配开始和结束,那么多个()的时候我们具体需要使用哪个()里面的内容就需要用模板定义,规定语法$1$表示第一个括号的匹配内容,$2$表示第二个括号的匹配内容,依次类推。

  匹配数字:我们使用时正则一般只会匹配到一个满足的结果,但是如果有多个结果就需要在这里说明我们具体用第几个结果,0表示随机取一个结果,1表示取全部结果,一般我们设置为0即可

  缺省值:正则表达式未匹配到内容时的默认值

  如果我们需要提取登录的cookie值,我们只需要做如下设置即可

jmeter正则表达式,萌新入门篇

  然后其他地方,我们只需要调用该变量名即可实现变量的调用,变量调用格式为${jitui},比如下图将其放入请求header中.如变量部分有疑问,可阅读博主其他文档jmeter变量的使用

jmeter正则表达式,萌新入门篇

总结

一句话说,jmeter正则表达式可以帮助我们从一堆数据中找打我们想要的字段,并把它赋值给一个变量,如果我们需要用到这个字段的时候,通过变量去调用即可。正则表达式是一个很强大的功能,不仅仅限于此处的使用,如果有兴趣可以深入学习一下,对自己有好处,能开发智力,锻炼逻辑思维能力

    本帖适合不懂正则表达式的萌新了解正则表达式,其中语言描述很通俗,所以和专业术语有偏差的地方可以暂时先不管,萌新领会精神后可以深入了解专业的正则表达式进阶语法

--  以上内容均为笔者原创,转载请注明出处,如有不当欢迎指正