关于正则表达式:Sublime Text 中的非捕获组正则表达式不起作用

Non-capturing group reg-ex in Sublime Text not working

enter

1
2
<span>        </span>
      ^^^^^^^^

我的正则表达式是 (?:>) +(?:<)。我正在尝试使用非捕获组从选择中排除 ><,但它似乎不起作用。

目前,这两个正则表达式似乎在做同样的事情:

使用非捕获组:(?:>) +(?:<)

没有非捕获组:> +<

我认为我对正则表达式的理解不够好,但我不这里有什么问题?


非捕获组不会捕获组中的子模式(您可以稍后参考),但是,非捕获组中已匹配的所有子模式不会从整个匹配结果中排除。

解决问题的方法是使用零宽度断言的环视。环视只是测试,不是最终结果的一部分。

对于空格:

1
(?<=>) +(?=<)

对于所有空白字符:

1
(?<=>)\\s+(?=<)

(另一种解决方案是使用 > +<>< 作为替换字符串)


非捕获组的目的是让您可以与一组字符作为一个组进行交互,而不会使其成为您可以在参考中使用的子匹配。所以你是正确的 (?:>) +(?:<) 就你的目的而言等同于 > +<