JMeter中使用正则表达式无法从URL正确提取code值的问题
正则提取code值的问题分析与解决
问题出在哪
你用的正则Location: https://xxxx?code=([^"]+)\s有两个关键问题:
- 匹配范围错误:
[^"]+是匹配除双引号外的所有字符,但你的Location里code后面的分隔符是&而非双引号,所以这个规则会一直匹配到空格,把code=xxx&state=xxx整个串都纳入结果。 - 匹配细节偏差:原字段里
Location和冒号之间有空格(Location :),但你写的正则是Location:(无空格),虽然当前没直接导致匹配失败,但会影响正则的精准度。
修正后的正则表达式
把终止标记换成&,同时修正空格问题,正确的正则如下:
Location : https://xxxx\?code=([^&]+)
规则说明
Location :精准匹配原字段中Location与冒号之间的空格\?转义问号(正则中?是特殊元字符,代表匹配0或1次前置元素,必须转义才能匹配URL里的问号)([^&]+)匹配除&外的任意字符,遇到&state的&就停止,刚好提取纯code值
验证效果
用目标字符串Location : https://xxxx?code=MDXEVlThajoGXJj_-l6bYFaLxileF49d&state=8edf0d78测试,捕获组会直接得到:MDXEVlThajoGXJj_-l6bYFaLxileF49d,完全符合需求。
内容的提问来源于stack exchange,提问作者Danish Shabbir
相关产品推荐
相关产品推荐

