2012-10-12 4 views
0

J'ai actuellement la regex '([^: ]+):([^ ]+)?', qui, quand donné une chaîne comme This is a correct:test msg: a b c bool:y renvoie [('correct', 'test'), ('msg', ''), ('bool', 'y')] (en utilisant pythons re.findall).Regex a: b c d a: b

Je veux réellement revenir quelque chose comme [('correct', 'test'), ('msg', 'a b c'), ('bool', 'y')]. Comment puis-je forcer regex regarder à l'intérieur du deuxième morceau, et voir s'il y a un : en elle?

+0

Pourquoi '[('correcte', 'test), (' msg ' 'ab c'), ('bool', 'y')]' et non '[('correcte',' test '), (' msg ' 'a'), ('bool bc', y')] '? Autrement dit, comment si les regex que vous voulez savoir l'un et pas l'autre? –

+0

On dirait que vous devez faire un test avant négatif pour vous assurer que le mot que vous consommez ne fait pas partie de la 1ère position. –

Répondre

Questions connexes