В настоящее время у меня есть регулярное выражение '([^: ]+):([^ ]+)?'
, которое при заданной строке, например 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')]
. Как заставить регулярное выражение заглянуть во второй кусок и посмотреть, есть ли в нем :
?
Почему '[('правильно', 'тест), (' сбщ ' 'аб с'), ('BOOL', 'у')]', а не '[('правильно',' test '), (' msg ',' a '), (' bc bool ', y')] '? То есть, как должно регулярное выражение знать, что вы хотите, а не другое? –
Похоже, вам нужно сделать отрицательный взгляд, чтобы убедиться, что слово, которое вы потребляете, не входит в 1-ю позицию. –