Контекстно-зависимое разбиение строк, сохранение разделителей - PullRequest
0 голосов
/ 25 июня 2009

У меня есть строка вида "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']

с неоптимальными результатами. Есть ли одна строчка, которая даст мне то, что я хочу, без необходимости промаркировать разделитель последним элементом?

Ответы [ 3 ]

2 голосов
/ 25 июня 2009

Вы были очень близки, попробуйте это:

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

Я использую положительный взгляд для достижения этой цели - в основном я сопоставляю дефис, за которым сразу следует цифровой символ.

0 голосов
/ 25 июня 2009

Будет ли позитивный прогноз работать?

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

Не уверен, что вам нужен (и) окружающий взгляд, но попробуйте.

0 голосов
/ 25 июня 2009
re.split('-(?=\d)', 'foo-bar-1.23-4', 1)

Используя lookahead , это именно то, что сделал Эндрю, но избил меня на минуту ...: -)

...