在精通正则表达式一中讲到了反向引用,其中的括号就是捕获型括号,它具有分组和捕获的作用,但是,有时候我们需要用到非捕获型括号,比如我已经写好了一个程序,现在我要扩展正则表达式的功能,比如加一个‘(…)?’,这样并没有影响原来的功能而且能匹配比原来跟多的东西,但是,它打乱了原来的组的反向引用顺序,如果恰好这个分组是你用不到的,那么就可以就可以用上非捕获型括号:
(?: )
因为它不用捕获,还能提高匹配效率,但是,这种表示方法确实有点不够美观,会增加整体阅读难度,所以可以根据实际情况取舍。
下面举一个具体的例子来说明非捕获型括号:
这是正常的匹配:
这是非捕获型括号的匹配: