JMeter正则表达式问题:如何提取悉尼服务商对应的2269值
解决悉尼服务商对应2269值的正则匹配问题
我明白你的问题了——你的正则因为贪婪匹配的特性,跳过了悉尼服务商对应的value,直接抓到了后面墨尔本的2271。这是因为(?s).*会尽可能多地匹配字符,直到找到最后一个符合name="addCompany" value="的位置,自然就拿到了靠后的墨尔本服务商数值。
修正后的正则表达式
推荐用非贪婪匹配来解决这个问题,把原来的.*改成.*?,这样正则会在找到第一个匹配的name="addCompany" value="时就停止,而不是一直往后找。修正后的正则如下:
<td>XYZ Market Services \(Sydney\)</td>(?s).*?name="addCompany" value="(.+?)"
更严谨的版本(可选)
如果想要避免后续HTML结构变化导致的意外匹配,可以进一步限制匹配范围在悉尼服务商所在的<tr>标签内:
<tr>.*?<td>XYZ Market Services \(Sydney\)</td>(?s).*?name="addCompany" value="(.+?)"(?=.*?</tr>)
关键说明:
(?s):开启单行模式,让.可以匹配换行符,适配HTML的换行结构.*?:非贪婪匹配,尽可能少地捕获字符,确保停在第一个目标value处(?=.*?</tr>):正向预查,保证匹配到的value一定在当前<tr>的结束标签之前,彻底避免跨行误匹配
用这个正则搭配你的模板$1,就能准确提取到悉尼服务商对应的2269值了。
内容的提问来源于stack exchange,提问作者Enock Prince
相关产品推荐
相关产品推荐

