我想在Jmeter中提取正则表达式的最后一次出现。 我使用Regular Extractor表达式执行此操作,但我无法获得最后一次出现。
我试过了:
然后在我的脚本中我使用了 $ {expression} 变量
我测试了 expression_matchNr ,但它给了我匹配的数量。
我应该在“匹配否:”中添加什么?
提前致谢
答案 0 :(得分:5)
如果您有以下输出:
expression=foo
expression_1=foo
expression_2=bar
expression_3=**what you looking for**
expression_matchNr=3
您可以使用JMeter的__V函数获取expression_3
变量的值
根据功能description:
例如,如果有变量A1,A2和N = 1:
${A1}
- 工作正常${A${N}}
- 不起作用(嵌套变量引用)${__V(A${N})}
- 工作正常。 $ {N}变为A1,__ V函数返回A1 所以在你的情况下,函数返回最后一个匹配,无论多少匹配将是:
${__V(expression_${expression_matchNr})}
请参阅How to Use JMeter Functions系列文章,了解其他功能可以做些什么。
答案 1 :(得分:0)
不幸的是,JMeter核心不支持-1,-2 ......用于终极/倒数第二等表示法。但是,您可以使用否定预测
找到最终结果我偶然发现了这个问题,对我来说,我用这样的方法解决了这个问题:
[\s\S]*("var1":([^\"]+),"var2")(?!$1$)
和模板:$ 2 $
说明: 匹配任何东西直到(..1 ..) - 发生在之后无法匹配(..1 ..)的地方。 返回(.2 ..)
也是第一次出现的项目:
("var1":([^\"]+),"var2")(?!$1$)[\s\S]*
至于效率,这会将整个查询[\ s \ S] *保存在一个变量中,所以它有点重,我还没有测试它是否会拉得太多内存 如果是,请考虑使用支持 last 对象方法的javaScript或JQuery