我正在尝试从响应标头中提取会话ID的值,除了在jemeter中使用lookbehind之外,还有其他方法吗? 我在regexformatter中验证了我的正则表达式,并按预期工作,但由于jmeter不支持向后看,因此该解决方案不适用于我。
响应头:
Expires: 0
X-Frame-Options: DENY
x-session-id: 1a5e099f-5234-4
X-Application-Context: test:8080
使用的正则表达式为:
(?<=x-session-id: ).{0,16}
有人可以帮我吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
根据Regular Expressions的JMeter User Manual章:
请注意,
<http auto-config="true"> <csrf disabled="true"/> <intercept-url pattern="/admin/**" access="hasRole('ADMIN')" /> <intercept-url pattern="/admin/**" access="hasRole('ADMIN')" /> <form-login login-page="/loginform" authentication-failure-url="/loginform?error=true" /> <logout logout-url="/logout" logout-success-url="/" /> <access-denied-handler error-page="/403" /> </http>
-向后看-不支持。
因此您可以使用类似(?<=regexp)
的东西,它应该可以正常工作:
更多信息:Using Regular Expressions to Extract Tokens and Session IDs to Variables
答案 2 :(得分:0)
假定会话ID中的最后一个字符为数字。然后,您可以使用以下内容。如果您认为会话ID中的第二个组将是数字,则将第二个\w+
替换为\d+
,它将达到目的。让我知道您是否认为其他数据集可能会使此正则表达式失败。
正则表达式: (?:\w+-\w+-\d+)
好像您对Regex有所了解,所以不提解释了。让我知道这是否不适合您。我将尝试提出另一种方法,但在这种情况下,请提供更多数据集。祝你好运。