JMeter和正则表达式提取器

时间:2013-11-22 12:07:58

标签: regex jmeter

我正在使用JMeter,响应的内容是这样的,每个响应一个。

<input name="_formkey" type="hidden" value="65aace0b-fa79-4b99-bf20-22c6ef2b043c" />

必须将_formkey的值传递给下一个请求。我为此使用了正则表达式提取器 -

input name="_formkey" type="hidden" value="(.+?)" 

这会产生很多变量

formkey=bec48a21-3955-493e-93c2-97a1f0bf64cf
formkey_g=1
formkey_g0=input name="_formkey" type="hidden" value="bec48a21-3955-493e-93c2-97a1f0bf64cf" 
formkey_g1=bec48a21-3955-493e-93c2-97a1f0bf64cf

我使用formkey传递值,它工作正常。但是如何避免生成其他3个变量?我的正则表达不是“完美的”,就像没有完美的工作一样吗?

1 个答案:

答案 0 :(得分:3)

你的正则表达形式完美。您将获得组的数量和组本身作为其他变量。 formkey_g0是匹配的整个字符串,formkey_g1是括号内匹配的部分。请参阅JMeter页面上的the examles。引用相关部分以达到完整性:

  

例如,假设:

     
      
  • 参考名称:MYREF
  •   
  • 正则表达式:name =“(。+?)”value =“(。+?)”
  •   
  • 模板:$ 1 $$ 2 $
  •   
     

将设置以下变量:

     
      
  • MYREF:file.namereadme.txt
  •   
  • MYREF_g0:name =“file.name”value =“readme.txt”
  •   
  • MYREF_g1:file.name
  •   
  • MYREF_g2:readme.txt
  •   
     

稍后可以在JMeter测试计划中引用这些变量,   如$ {MYREF},$ {MYREF_g1}等

请注意,MYREF_g0始终是正则表达式的完全匹配,这与在Java和其他编程语言中使用正则表达式一致。