我有一个“foo-bar-1.23-4”形式的字符串,我需要在第一次爆炸时分割后跟一个数字,结果是['foo-bar','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']
结果不理想。是否有一个单行程可以得到我想要的东西,而不必使用最后一个元素来划分分隔符?
答案 0 :(得分:2)
你非常接近,试试这个:
re.split('-(?=\d)', 'foo-bar-1.23-4', 1)
我正在使用positive lookahead来完成此操作 - 基本上我正在匹配一个后跟数字字符的短划线。
答案 1 :(得分:0)
re.split('-(?=\d)', 'foo-bar-1.23-4', 1)
使用lookahead,这正是安德鲁所做的,但一分钟就打败了我......: - )
答案 2 :(得分:0)
前瞻性是否有效?
re.split('-?=\d', 'foo-bar-1.23-4', 1)
不确定是否需要围绕前瞻的(和),但要试一试。