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

求符合要求的XPath 1.0查询:匹配含整词EXAMPLE和数字的<p>元素

XPath 1.0 匹配含大小写不敏感整词"EXAMPLE"且带数字的

元素

需求明确

需要匹配满足以下条件的<p>元素:

  • 包含大小写不敏感的整词EXAMPLE(即EXAMPLE需作为完整单词出现,前后为空格、任意标点符号,或位于字符串开头/结尾)
  • 元素内包含至少一个数字
  • 排除EXAMPLE与其他字母/数字直接连在一起的情况
  • 环境仅支持XPath 1.0

解决方案

以下是符合要求的XPath查询:

//p[
  # 检查元素是否包含数字
  translate(., translate(., '0123456789', ''), '') != ''
  and
  # 大小写不敏感的整词匹配逻辑
  (
    normalize-space(translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''), ' ')) = 'EXAMPLE'
    or starts-with(normalize-space(translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''), ' ')), 'EXAMPLE ')
    or ends-with(normalize-space(translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''), ' ')), ' EXAMPLE')
    or contains(normalize-space(translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), translate(translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''), ' ')), ' EXAMPLE ')
  )
]

逻辑解释

1. 数字存在检查

translate(., translate(., '0123456789', ''), '') != ''

  • 内层translate移除所有数字,得到不含数字的文本内容
  • 外层translate保留原文本中所有数字,若结果不为空,说明元素包含至少一个数字

2. 大小写不敏感的整词匹配

这部分通过三步处理文本,覆盖所有整词场景:

  1. 统一大小写:translate(., 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')将所有小写字母转为大写,实现大小写不敏感匹配
  2. 标准化分隔符:translate(upper_text, translate(upper_text, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''), ' ')将所有非字母数字字符替换为空格,统一单词分隔规则
  3. 清理连续空格:normalize-space(clean_text)合并连续空格并移除首尾空格,得到标准化的文本串

最后通过四个条件覆盖所有整词情况:

  • 标准化文本等于EXAMPLE(单独出现)
  • 标准化文本以EXAMPLE 开头(作为首个单词)
  • 标准化文本以 EXAMPLE结尾(作为末尾单词)
  • 标准化文本包含EXAMPLE(作为中间单词)

案例验证

匹配成功案例

  • <p><b>for eXaMpLe:</b> 00887546858</p>:转大写并标准化后为FOR EXAMPLE 00887546858,包含EXAMPLE,且有数字,符合条件
  • <p>test,eXaMpLe:00887546858</p>:转大写并标准化后为TEST EXAMPLE 00887546858,包含EXAMPLE,且有数字,符合条件

匹配排除案例

  • <p><b>534534tretetEXAMPLE:</b> 00887546858</p>:转大写并标准化后为534534TRETETEXAMPLE 00887546858,无独立的EXAMPLE单词,不符合条件
  • <p><b>EXAMPLE00887546858</p>:转大写并标准化后为EXAMPLE00887546858,EXAMPLE与数字直接连接,不符合整词要求

注意事项

  • 该查询自动兼容所有标点符号,无需额外配置,因为非字母数字字符都会被替换为空格
  • 若需要扩展支持其他特殊场景(如EXAMPLE前后有特定符号),可在整词匹配条件中补充对应规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:37:04