2012-10-12 18 views
0

В настоящее время у меня есть регулярное выражение '([^: ]+):([^ ]+)?', которое при заданной строке, например This is a correct:test msg: a b c bool:y, возвращает [('correct', 'test'), ('msg', ''), ('bool', 'y')] (используя питоны re.findall).Regex a: b c d a: b

Я действительно хочу вернуть что-то вроде [('correct', 'test'), ('msg', 'a b c'), ('bool', 'y')]. Как заставить регулярное выражение заглянуть во второй кусок и посмотреть, есть ли в нем :?

+0

Почему '[('правильно', 'тест), (' сбщ ' 'аб с'), ('BOOL', 'у')]', а не '[('правильно',' test '), (' msg ',' a '), (' bc bool ', y')] '? То есть, как должно регулярное выражение знать, что вы хотите, а не другое? –

+0

Похоже, вам нужно сделать отрицательный взгляд, чтобы убедиться, что слово, которое вы потребляете, не входит в 1-ю позицию. –

ответ

Смежные вопросы