2009-06-25 119 views
0

我有一個形式爲「foo-bar-1.23-4」的字符串,我需要在第一個hypen後跟一個數字進行拆分,結果是['foo '欄','1.23-4']。我已經試過如下:上下文敏感的字符串拆分,保留分隔符

>>> re.split('-\d', 'foo-bar-1.23-4', 1) 
['foo-bar', '.23-4'] 

>>> re.split('-(\d)', 'foo-bar-1.23-4', 1) 
['foo-bar', '1', '.23-4'] 

與次優的結果。有沒有一種方法可以讓我得到我想要的,而不必用最後一個元素來區分分隔符?

回答

2

你是非常接近的,試試這個:

re.split('-(?=\d)', 'foo-bar-1.23-4', 1) 

我使用positive lookahead做到這一點 - 基本上我匹配的是後面緊跟一個數字字符一個破折號。

0
re.split('-(?=\d)', 'foo-bar-1.23-4', 1) 

使用lookahead,這正是安德魯沒有,但通過一分鐘打我... :-)

0

請問積極前瞻的工作?

re.split('-?=\d', 'foo-bar-1.23-4', 1) 

不知道你是否需要(和)圍繞前視,但給它一個鏡頭。