可选的非捕获组是多余的吗?
是以下正则表达式:
(?:wo)?men
语义上等同于以下正则表达式?
(wo)?men
你的(?:wo)?men
和(wo)?men
在语义上是等价的,但在技术上是不同的,即第一个是使用非捕获组,另一个是捕获组。因此,问题是当我们有捕获组时为什么要使用非捕获组?
非捕获组有时会有所帮助。
此外,它只是让我们的比赛更干净:
您可以使用非捕获组来保留组织或分组的好处,但没有捕获的开销。
重构现有正则表达式以将捕获转换为非捕获组似乎不是一个好主意,因为它可能会破坏代码或需要太多努力。