jmeter 正则表达式基础语法

正则表达式:描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
对于正则表达式,相信很多人都知道或者听说过,但是很多人的第一感觉就是难学,因为看第一眼时,全是一堆各种各样的特殊符号,完全不知所云。
其实只是对正则不了解而以,了解了你就会发现,原来就这样啊。正则所用的相关字符其实不多,也不难记,更不难懂,唯一难的就是组合起来之后,可读性比较差,而且不容易理解。

本文旨在让大家对正则有一个基本的了解,能写得出简单的正则表达式,并在Jmeter中应用,以满足日常测试或性能测试中的需求。

1、必须掌握的正则字符

先简要看下,最常用的字符含义。

"^" :^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。

"$"  :$会匹配行或字符串的结尾。

"w":匹配字母,数字,下划线。

例如我要匹配"a2345BCD__TTz" 正则:"w+"  这里的"+"字符为一个量词指重复的次数。 

"s":匹配空格。

例如字符 "a b c" 正则:"wswsw"  一个字符后跟一个空格,如有字符间有多个空格直接把"s" 写成 "s+" 让空格重复。 

".":匹配除了换行符以外的任何字符。

"[abc]": 字符组,匹配包含括号内元素的字符。

"*":   重复零次或更多(贪婪模式)。

例如"aaaaaaaa" 匹配字符串中所有的a  正则:"a*" 会出到所有的字符"a""+":   重复一次或更多次(懒惰模式)。

例如"aaaaaaaa" 匹配字符串中所有的a;  正则:"a+"会取到字符中所有的a字符,"a+"与"a*"不同在于"+"至少是一次而"*" 可以是0次。

"?":   重复零次或一次。

例如"aaaaaaaa" 匹配字符串中的a 正则 : "a?" 只会匹配一次,也就是结果只是单个字符a。

"{n}":  重复n次。

例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则:"a{3}" 结果就是取到3个a字符 "aaa""{n,m}":  重复n到m次。

例如正则 "a{3,4}" 将a重复匹配3次或者4次;所以供匹配的字符可以是三个"aaa"也可以是四个"aaaa"正则都可以匹配到。

"{n,}":  重复n次或更多次。

与{n,m}不同之处就在于匹配的次数将没有上限,但至少要重复n次 如 正则"a{3,}" a至少要重复3次。

"*?":   重复任意次,但尽可能少重复。

如 "acbacb" 正则"a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb""+?":  重复1次或更多次,但尽可能少重复。

与上面一样,只是至少要重复1次。

"??":  重复0次或1次,但尽可能少重复。

如 "aaacb" 正则 "a.??b"只会取到最后的三个字符"acb""{n,m}?":  重复n到m次,但尽可能少重复。

如 "aaaaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

以上就是正则表达式中最基础的部分知识,大家是必须知道的知识点,对于更加复杂部分的内容本文未涉及。其实你看多了,就知道是什么意思了,就和你一开始对Linux命令不熟悉一样,用多了自然而然就记住了。不过也可以先收藏着,当作字典查找。

写完正则表达式,最好自己先验证下是否和预想的一样,能够提取你想要的。大家随便百度一下在线正则表达式测试,就可以验证了。

原文:https://testerhome.com/topics/16558

原文地址:https://www.cnblogs.com/sucretan2010/p/12626799.html