如何匹配所有> <除了粗体标记

时间:2019-11-21 15:54:50

标签: regex regex-group

我有一个正则表达式[&<>],用于匹配文本中的<>

类似于<i>text</i>-将匹配<,>,<,>,

但是我不希望它与<b></b>匹配

我该怎么做?

示例:<i>match me</i> <b>don't match me</b> <i>match me</i>

斜体标签将仅匹配<>

1 个答案:

答案 0 :(得分:0)

您可以使用消极的环视效果实现此目标

(?<!b)>|(?!<b)(?!</b)<

Demo

说明:

(?<!b)>|(?!<b)(?!</b)<
       |                # match either
      >                 # a >,
(?<!b)                  # not preceeded by a b
                     <  # or a <,
        (?!<b)          # not preceeded by a <b
              (?!</b)   # and neither by </b

环视断言通常必须具有固定的长度,这就是为什么我们需要两个用于开括号的原因:一个用于<b>,一个用于</b>