相关控件
常见的如 jmeter 中的正则表达式提取器,JSON 提取器等
变量名
设置一个变量名,假如为 token
- 如果正则只用提取一组数据,且正则只匹配到了一个,我们直接使用
${token}即可正常提取数据,${token_g0}表示把正则中除小阔号之外的字符串也写了进来,这个写法在下面可以类比使用 - 如果正则只用提取一组数据,但是可以匹配多个,我们使用
${token_1},${token_2}…的形式来匹配提取到的整个数组的数据,${token_g}表示提取一共有多少个被正则匹配了的数据 - 如果正则要提取两组数据,正则只匹配到了一次,我们可以使用
${token_g1}和${token_g2}来提取两组数据 - 如果正则要提取两组数据,正则可以匹配到多次,我们可以使用
${token_1_g1},${token_2_g1}…和${token_1_g2},${token_2_g2}…的形式来提取各组中第几个匹配到的数据,且要注意的是${token_2_g1}可不能写成${token_g1_2},一定要把第几个写在前面,把第几组写在后头!
正则表达式
常规的正则表达式,小括号包裹着为要提取的数据
支持基础正则和扩展正则
不得不提及的是 jmeter 中\会起到转义的作用,因此如果响应体中存在\注意需要使用\\将反斜杠进行转义才行!比如要匹配\"Web这样的字符串,我们正则写成\"Web这样就会匹配不到,它会把反斜杠识别成转义字符,这样写等同于去匹配"Web了,那我还不如直接"Web这样写就行了,所以想把反斜杠也算进字符串我们只能这么写\\"Web
匹配到了几轮正则怎么看呢,通过这种形式${token_matchNr}即可
这里支持(?s)写在正则前表示忽视换行符,这样在匹配响应结果几段数据时候可以成功匹配上,否则(.*?)常规的这种写法句点是无法识别换行符的!
不得不提及一句,beanshell 中的 matches 方法需要写完全匹配的正则,比如需要写成^.*?abc.*$而不能只写abc这样是匹配不到的!
模板
正则中一个小括号包裹着的就是一个要提取的数据,如果一个正则中有两个小括号,那么模板中需要写$1$,$2$,或者写成$1$$2$的形式也是可以的
如果有多个正则匹配的括号,但是模板我们只写了$2$,$5$,那么我们可以${token_1_g2}和${token_1_g5}取到各自组的数据,如果想把第二个正则和第五个正则都取出来则使用${token_1}即可
匹配第几个
- 写的正则假如可以一直往后匹配,可以匹配很多个,这里写数字 n 表示只取第 n 个结果
- 写 0 表示随机第几个
- 写 -1 表示取到所有的数据
使用提取的数据
我们使用 json 提取器或者正则提取器提取之后
作用域问题
值得注意的是${token_g1}提取数据可以跨越控制器,但是无法跨越线程组使用
3616

被折叠的 条评论
为什么被折叠?



