JMeter正则表达式提取器,用于提取自定义标头“访问令牌”

时间:2017-10-30 07:42:37

标签: regex jmeter

我有使用正则表达式提取器提取问题的响应标题。为了简短起见,在排除故障后,我想出了一个有效但不完美的解决方案。

标题

Response headers:
HTTP/1.1 200 OK
Vary: Origin, Accept-Encoding
Access-Control-Allow-Credentials: true
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
X-Download-Options: noopen
X-Content-Type-Options: nosniff
access-token: GAbnLmcDzT4j5INPkSGwdbQzZIIFIaJoy4wBnmNUF4NEgGB11IfzTAMdqXyxIhAZ
Access-Control-Expose-Headers: access-token
Content-Type: application/json; charset=utf-8

解决方案

正则表达式:access-token:(。+?)\ n

模板:$ 1 $

请参阅下图,了解我认为解决方案错误的原因。 提取的令牌由多个变量表示为result_token, result_token_g, result_token_g0, result_token_g1

enter image description here

问题

只获取令牌的正确正则表达式和模板是什么。

TIA!

更新:

来自Regular Expression Extractor Doc的Bellow摘录实际上帮助我更好地理解了这个问题。

  

如果匹配编号设置为负数,则处理采样器数据中的所有可能匹配项。变量设置如下:

     
    

refName_matchNr - 找到的匹配数量;可能是0

         

refName_n,其中n = 1,2,3等 - 模板生成的字符串

         

refName_n_gm,其中m = 0,1,2 - 匹配n的组

         

refName - 如果找到匹配项,则始终设置为实际模板值,否则为默认值。

  

2 个答案:

答案 0 :(得分:0)

使用此:

Regular Expression : access-token: (.\w*)

Template: $1$

Match No: 1

DefaultValue:  Not found

答案 1 :(得分:0)

在我看来,你说得对; result-token_g1包含预期的捕获,并通过模板复制到结果标记。

不要担心result-token_g0;它应该显示完全匹配:捕获AND上下文。