可选的非捕获组是否冗余?
以下是正则表达式:
(?:wo)?men
在语义上等同于以下正则表达式?
(wo)?men
答案 0 :(得分:8)
您的(?:wo)?men
和(wo)?men
在语义上是等效的,但技术上是不同的,即第一个使用非捕获,另一个使用捕获组。因此,问题是为什么在捕获时使用非捕获组?
非担任团体有时会提供帮助。
此外,它只是makes our matches cleaner:
您可以使用非捕获组来保留组织或分组权益,但不会产生捕获的开销。
重新考虑现有正则表达式以将捕获转换为非捕获组似乎不是一个好主意,因为它may ruin the code或需要太多努力。