2012-03-01 121 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添加匹配組中的分裂值之間:

如果捕獲括號在圖案中使用,則在圖案中的所有組的文本也被返回作爲結果列表的一部分。