2009-06-25 90 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) 

不知道你是否需要(和)围绕前视,但给它一个镜头。