3

可能重复:
非捕获组?

从 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.

有什么不同?

4

3 回答 3

5

很快:非分组意味着它不会被匹配到一个组中。也就是说,例如,您不能通过 \1 引用它。

于 2012-04-30T10:38:12.903 回答
1

区别基本上就是肯特所说的。

它可能对非常复杂的正则表达式有用,或者在应用到性能至关重要的大量文本时很有用。

此外,如果你在你的正则表达式中使用了很多分组,但只有其中一些被引用(用于文本替换或任何原因),那么只有你真正需要的那些作为捕获组更简单,所以你可以然后从\1(或$1,取决于)到\n,而不是跳过数字。

于 2012-04-30T10:42:35.497 回答
0

非分组允许您在匹配字符串中使用一系列字符,而不会将其作为实际匹配项之一返回。例如,假设您正在搜索收据,并且只想提取商品的价格。假设您的收据如下所示:

milk 1.25
bread 1.15
deli meat 5.25
total 7.65

您可以使用非分组括号来排除价格为总计但捕获所有其他价格的行。

于 2012-04-30T10:43:03.150 回答