可能重复:
非捕获组?
从 python re 模块文档中,我看到:
(?:...) Non-grouping version of regular parentheses.
和
(...) Matches the RE inside the parentheses.
The contents can be retrieved or matched later in the string.
有什么不同?
很快:非分组意味着它不会被匹配到一个组中。也就是说,例如,您不能通过 \1 引用它。
区别基本上就是肯特所说的。
它可能对非常复杂的正则表达式有用,或者在应用到性能至关重要的大量文本时很有用。
此外,如果你在你的正则表达式中使用了很多分组,但只有其中一些被引用(用于文本替换或任何原因),那么只有你真正需要的那些作为捕获组更简单,所以你可以然后从\1(或$1,取决于)到\n,而不是跳过数字。
非分组允许您在匹配字符串中使用一系列字符,而不会将其作为实际匹配项之一返回。例如,假设您正在搜索收据,并且只想提取商品的价格。假设您的收据如下所示:
milk 1.25
bread 1.15
deli meat 5.25
total 7.65
您可以使用非分组括号来排除价格为总计但捕获所有其他价格的行。