RegEx 仅替换 <h> html 标签之外的事件

RegEx replace only occurrences outside of <h> html tags

我想用正则表达式替换下面文本中的 Plus,但前提是 不是 包裹在 header 中标签:

<h4 class="Somethingsomething" id="something">Plus plan</h4>The <b>Plus</b> plan starts at  per person per month and comes with everything from Basic.

在上面我想替换第二个“Plus”而不是第一个。

到目前为止我的正则表达式尝试是:

(?!<h\d*>)\bPlus\b(?!<\h>)

含义:

  1. 如果在 结尾,则不要捕获以下内容
  2. 仅当“Plus”组被 spaces 或白色 space
  3. 包围时捕获

但是 - 这会捕获这两种情况。有人可以指出我的错误并纠正吗?

我想在 VBA 中使用它,但据我所知应该是一个一般的正则表达式问题。

Somewhat related but not addressing my problem in regex

Not relevant, as not RegEx

您可以使用

\bPlus\b(?![^>]*<\/h\d+>)

regex demo。要在替换模式中使用匹配项,请在 VBA 代码中使用 $& 反向引用。

详情:

  • \bPlus\b - 一个完整的单词 Plus
  • (?![^>]*<\/h\d+>) - 如果在当前位置的右侧紧邻有
    • [^>]* - >
    • 以外的零个或多个字符
    • <\/h - </h 字符串
    • \d+ - 一位或多位数字
    • > - 一个 > 字符。