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

如何编写PCRE2正则表达式匹配含<B>255</B>的<Item>元素

匹配包含
return (<B>255</B>)
的元素的PCRE2正则解决方案

要精准选中XML里包含<B>255</B>子元素的<Item>...</Item>元素,之前尝试的<Item(.|\n)*?<B>255</B>(.|\n)*?</Item>存在匹配范围失控的问题——要么匹配不到目标内容,要么会错误覆盖多个<Item>(比如会把<Item KID="2">到<Item KID="7">的所有内容连在一起匹配)。

示例XML

<?xml version="1.0" encoding="UTF-8"?>
<Favourites>
  <Buttons>
    <Item KID="1">
      <ButtonColor>
        <R>255</R>
        <G>255</G>
        <B>255</B>
      </ButtonColor>
    </Item>
    <Item KID="2">
    </Item>
    <Item KID="3">
      <ButtonColor>
        <R>239</R>
        <G>235</G>
        <B>233</B>
      </ButtonColor>
    </Item>
    <Item KID="7">
      <ButtonColor>
        <R>255</R>
        <G>255</G>
        <B>255</B>
      </ButtonColor>
    </Item>
  </Buttons>
</Favourites>

正确的PCRE2正则表达式

<Item(?:(?!<Item|</Item>|<B>255</B>).)*<B>255</B>(?:(?!<Item|</Item>).)*</Item>

正则逻辑说明

  • <Item:锚定目标元素的起始标识
  • (?:(?!<Item|</Item>|<B>255</B>).)*:非捕获组搭配负向前瞻,确保在找到<B>255</B>之前,每一个字符都不会触发<Item、</Item>或目标子元素的开头,彻底避免跨越其他<Item>标签
  • <B>255</B>:精准匹配需要的子元素
  • (?:(?!<Item|</Item>).)*:同样用负向前瞻限制,确保从目标子元素到</Item>之间的内容不会溢出到其他<Item>中
  • </Item>:锚定元素的结束标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:01:18