
如果需要对元素进行分组,但不需要在结果中隔离该组的内容,请使用非捕获组(“
(?:xxxx)
”)代替正则表达式中的(“
(xxxx)
”)组。
通常,在复杂性属于中等的正则表达式中,将表达式各部分组合到一起。例如,在以下正则表达式模式中,括住文本“ab”的括号创建了一个组。因此,“+”限定符应用于该组,而不是单个字符:
/(ab)+/
默认情况下,“捕获”每个组的内容。作为执行正则表达式的结果的一部分,您可以在您的模式下获取各个组的内容。捕获这些组结果需要较长的时间并且需要占用更多内存,因为要创建将包含组结果的对象。作为一种替代方法,您可以使用非捕获组语法,即在左括号后包含一个问号和冒号。该语法指定这些字符作为一个组,但不会被捕获以获得结果:
/(?:ab)+/
与使用标准组语法相比,使用非捕获组语法速度更快且占用的内存更少。