什么是常规括号的非分组版本

时间:2012-04-30 10:36:33

标签: python regex

  

可能重复:
  Non capturing group?

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

有什么区别?

3 个答案:

答案 0 :(得分:3)

不久: 非分组意味着它不会被匹配到一个组中。也就是说,你不能用\ 1来引用它。

答案 1 :(得分:1)

差异基本上是肯特所说的。

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

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

答案 2 :(得分:0)

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

milk 1.25
bread 1.15
deli meat 5.25
total 7.65

你可以使用非分组的paren来排除价格相当于所有其他价格的行。