【问题标题】:Non-capturing group reg-ex in Sublime Text not workingSublime Text 中的非捕获组正则表达式不起作用
【发布时间】:2014-08-16 06:18:32
【问题描述】:

我正在尝试删除标签之间的所有挥之不去的空格。所以我尝试使用正则表达式来选择它们。

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

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

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

对于非捕获组:(?:&gt;) +(?:&lt;)

没有非捕获组:&gt; +&lt;

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

【问题讨论】:

    标签: regex sublimetext3


    【解决方案1】:

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

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

    空格:

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

    对于所有空白字符:

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

    (另一种解决方案是使用&gt; +&lt;&gt;&lt; 作为替换字符串)

    【讨论】:

      【解决方案2】:

      非捕获组的目的是允许您将一组字符作为一个组进行交互,而不使其成为您可以在参考中使用的子匹配。所以你是正确的(?:&gt;) +(?:&lt;) 等同于你的目的&gt; +&lt;

      【讨论】:

        猜你喜欢
        • 2013-05-07
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 2015-10-16
        • 1970-01-01
        • 2023-03-10
        • 2018-09-08
        • 1970-01-01
        相关资源
        最近更新 更多