我正在尝试删除标签之间的所有延迟空格。所以我尝试用正则表达式选择它们。
<span> </span>
^^^^^^^^
我的正则表达式是(?:>) +(?:<)
。我正在尝试使用非捕获组从选择中排除>
和<
,但它似乎无法正常工作。
目前,这两个正则表达式似乎完全相同:
使用非捕获组:(?:>) +(?:<)
没有非捕获组:> +<
我认为我对正则表达式的理解不够好,但我不确定。这有什么不对?
答案 0 :(得分:7)
non-capturing group不捕获组中的子模式(稍后可以引用),但是,非捕获组中匹配的所有子模式都不会从整个匹配结果中排除。
解决问题的方法是使用零宽度断言的lookarounds。 Lookarounds只是测试,不是最终结果的一部分。
代表空格:
(?<=>) +(?=<)
表示所有空白字符:
(?<=>)\s+(?=<)
(另一种解决方案是使用> +<
和><
作为替换字符串)
答案 1 :(得分:0)
非捕获组的目的是允许您将一组字符作为一组进行交互,而不必将其作为可在引用中使用的子匹配。所以你是正确的(?:>) +(?:<)
等同于> +<
的目的。