我正在使用JMeter的正则表达式提取器从第一个HTTP响应头中捕获安全令牌,以便在将来的请求中使用。
HTTP响应如下:
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw","sessionTimeoutSeconds":1800,"profileRequirements":null}
所以我试图抓住我写RANDOMCHARS的所有角色
{"token":"RANDOMCHARS","sessionTimeoutSeconds":1800,"profileRequirements":null}
我打算使用此网站测试任何建议:https://regexr.com/
任何帮助都将远远超出赞赏! =)
答案 0 :(得分:1)
"token"\s*:\s*"([^"]*)"
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw","sessionTimeoutSeconds":1800,"profileRequirements":null}
以下输出是捕获组1
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw
"token"
按字面意思匹配\s*
匹配任意数量的空白字符:
按字面意思匹配\s*
匹配任意数量的空白字符"
按字面意思匹配([^"]*)
将除"
以外的任何字符捕获到捕获组1 "
与此字面匹配答案 1 :(得分:0)
请注意,自JMeter 3.0以来,您有JSON Extractor,它用于使用JsonPath语言从JSON获取值,这种语言比正则表达式更快,更简单,更稳定。
相关配置为:
token
$.token
如果是这样,您将能够在必要时将提取的值称为${token}
。
演示: