2012-03-01 122 views
1

当我想知道背后的以下行为的原因:括号中的正则表达式分割字符串

>>> re.compile("(b)").split("abc")[1] 
'b' 
>>> re.compile("b").split("abc")[1] 
'c' 

我看来,当我周围添加分裂模式括号,重新将其添加入拼合阵列。但为什么?它是一致的,还是简单的正则表达式的独立特征?

回答

6

它的re.split一个特点,根据documentation

如果捕获括号在图案中使用,然后在图案中的所有组的文本也返回结果列表的一部分。

通常,括号表示捕获组,并用于提取字符串的某些部分。阅读更多关于capture groups

4

在任何正则表达式中,括号都表示一个捕获组。捕获组通常用于从匹配的字符串中提取值(连同re.matchre.search)。有关详细信息,请参阅official documentation(搜索(...))。

re.split添加匹配组中的分裂值之间:

如果捕获括号在图案中使用,则在图案中的所有组的文本也被返回作为结果列表的一部分。