You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter正则表达式提取指定LegCount对应航班详情问题求助

修正JMeter正则表达式提取指定LegCount的航班数据

问题根源分析

你当前的正则表达式存在两个核心问题:

  1. 闭合标签格式错误:所有<.a:XXX>写法不符合XML标准,应为</a:XXX>,导致正则无法匹配到正确的标签闭合位置。
  2. 跨节点匹配风险:原正则使用[\s\S]+?会无差别匹配任意字符,可能跨越多个<a:FlightSegment>节点,导致无法精准定位到目标LegCount对应的节点。

修正后的正则表达式

去程(匹配<a:LegCount>1</a:LegCount>的航班数据)

<a:FlightSegment>(?:(?!<a:FlightSegment>)[\s\S])*?<a:LegCount>1</a:LegCount>(?:(?!<a:FlightSegment>)[\s\S])*?<a:LFID>(.+?)</a:LFID>(?:(?!<a:FlightSegment>)[\s\S])*?<a:DepartureDate>(.+?)T(.+?)</a:DepartureDate>(?:(?!<a:FlightSegment>)[\s\S])*?<a:FCCode>(.+?)</a:FCCode>(?:(?!<a:FlightSegment>)[\s\S])*?<a:FBCode>(.+?)</a:FBCode>(?:(?!<a:FlightSegment>)[\s\S])*?<a:SegmentDetail>(?:(?!<a:FlightSegment>)[\s\S])*?<a:Origin>(.+?)</a:Origin>(?:(?!<a:FlightSegment>)[\s\S])*?<a:Destination>(.+?)</a:Destination>

返程(匹配<a:LegCount>2</a:LegCount>的航班数据)

<a:FlightSegment>(?:(?!<a:FlightSegment>)[\s\S])*?<a:LegCount>2</a:LegCount>(?:(?!<a:FlightSegment>)[\s\S])*?<a:LFID>(.+?)</a:LFID>(?:(?!<a:FlightSegment>)[\s\S])*?<a:DepartureDate>(.+?)T(.+?)</a:DepartureDate>(?:(?!<a:FlightSegment>)[\s\S])*?<a:FCCode>(.+?)</a:FCCode>(?:(?!<a:FlightSegment>)[\s\S])*?<a:FBCode>(.+?)</a:FBCode>(?:(?!<a:FlightSegment>)[\s\S])*?<a:SegmentDetail>(?:(?!<a:FlightSegment>)[\s\S])*?<a:Origin>(.+?)</a:Origin>(?:(?!<a:FlightSegment>)[\s\S])*?<a:Destination>(.+?)</a:Destination>

关键修正说明

  • 修复标签格式:将所有错误的闭合标签<.a:XXX>替换为标准XML闭合标签</a:XXX>,确保正则能正确识别标签边界。
  • 精准节点锁定:使用(?:(?!<a:FlightSegment>)[\s\S])*?替代原有的[\s\S]+?,该表达式会匹配任意字符,但不会跨越到下一个<a:FlightSegment>节点,确保仅在目标节点内部提取数据。
  • 优先定位目标LegCount:调整匹配顺序,先找到目标<a:LegCount>X</a:LegCount>标签,再提取该节点内的其他字段,避免因节点顺序问题导致的匹配失败。

JMeter提取器设置建议

  • 对于去程提取器,设置匹配数字为1(若仅存在一个LegCount=1的航班),若有多个可设为-1提取所有结果。
  • 对于返程提取器,设置匹配数字为1(对应LegCount=2的航班)。
  • 模板设置保持与原正则一致,例如$1$对应LFID,$2$对应出发日期,$3$对应出发时间等。

内容的提问来源于stack exchange,提问作者Lalmani Kashyap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:35:22