2017-04-04 33 views
1

的Python似乎在Python匹配的組時,有一個相當令人驚訝的行爲:爲什麼Python中的正則表達式組沒有按預期匹配?

>>> re.split("\+|-", "1+2") 
['1', '2'] 

>>> re.split("(\+|-)", "1+2") 
['1', '+', '2'] 

我還沒有找到爲什麼分組一個表達式會防止它匹配任何令人滿意的解釋,所以這裏有什麼問題嗎?

根據regex101,在匹配時絕對沒有區別,但需要更多步驟。 regex test

+1

見http://stackoverflow.com/questions/2136556/in -python-怎麼辦-I-拆分一個字符串並保持的最分隔符。和['re.split' docs](https://docs.python.org/2/library/re.html#re.split):*如​​果在模式中使用捕獲括號,則所有組中的文本模式也作爲結果列表的一部分返回。* –

回答

2

當您添加()時,您要求Python在分割中「捕捉」該值。

一樣,如果你是做:

>>> re.split("(a\+|-)", "1a+2") 
['1', 'a+', '2'] 

然後它會獲取一個+,並把它放在中心。

發生了什麼事它,它正在採取所有捕獲的分組,並把它們相關的項目之間的陣中,就像這個例子:

>>> re.split("(a)(\+|-)", "1a+2") 
['1', 'a', '+', '2'] 
相關問題