Sublime Text中的非捕获组正则表达式无法正常工作

时间:2014-06-25 15:31:14

标签: regex sublimetext3

enter image description here 我正在尝试删除标签之间的所有延迟空格。所以我尝试用正则表达式选择它们。

<span>        </span>
      ^^^^^^^^

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

目前,这两个正则表达式似乎完全相同:

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

没有非捕获组:> +<

我认为我对正则表达式的理解不够好,但我不确定。这有什么不对?

2 个答案:

答案 0 :(得分:7)

non-capturing group不捕获组中的子模式(稍后可以引用),但是,非捕获组中匹配的所有子模式都不会从整个匹配结果中排除。

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

代表空格:

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

表示所有空白字符:

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

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

答案 1 :(得分:0)

非捕获组的目的是允许您将一组字符作为一组进行交互,而不必将其作为可在引用中使用的子匹配。所以你是正确的(?:>) +(?:<)等同于> +<的目的。