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

XPath多contains条件过滤:是否存在更简洁高效的写法?

XPath多关键词匹配的简化写法

你当前使用的and (contains(BusinessType,'Restaurant') or contains(BusinessType,'Pub') or contains(BusinessType,'Takeaway'))能正常返回结果,但可以根据你所用的XPath版本做更简洁的优化:

1. XPath 2.0及以上版本(支持场景:Selenium 4+、XQuery、部分XML解析库等)

直接用matches()函数搭配正则表达式,用竖线分隔关键词即可,写法非常简洁:

and matches(BusinessType, 'Restaurant|Pub|Takeaway')

要是需要忽略大小写,加个标志参数就行:

and matches(BusinessType, 'restaurant|pub|takeaway', 'i')

2. 仅支持XPath 1.0的场景(旧工具、部分传统解析库)

XPath 1.0没有原生正则支持,但可以把写法做紧凑些,或者避免部分匹配的问题:

  • 紧凑版多contains(和原逻辑一致,仅格式更简洁):
and (contains(BusinessType,'Restaurant') or contains(BusinessType,'Pub') or contains(BusinessType,'Takeaway'))
  • 避免部分匹配的写法(比如防止RestaurantBar被误识别为Restaurant):
and (contains(concat(',', BusinessType, ','), ',Restaurant,') 
     or contains(concat(',', BusinessType, ','), ',Pub,') 
     or contains(concat(',', BusinessType, ','), ',Takeaway,'))

总结:能用XPath 2.0+就用matches(),是最简洁高效的方案;只能用1.0的话,选上面两种写法里适合你需求的就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:45:55