Otra solución es utilizar expresiones más precisas/restrictivas/específicas.
Para capturar type, dependiendo de los detalles concretos, puedes utilizar alguna de las expresiones "[^:]*", "[a-zA-Z]*" o "\w*" en lugar de ".*" Missatge de Jose Caballero <jcaballero....@gmail.com> del dia dl., 17 d’ag. 2020 a les 15:44: > Hola, > > tengo una serie de lineas, todas con el mismo formato: > > <type>: <value> > > donde <type> es una sola palabra, y <value> es una frase. > Intentaba "parsearlas" con algo como esto: > > pattern = re.compile("^(?P<type>(.*)): (?P<value>(.*))$") > parse = pattern.match(line) > groups = parse.groupdict() > print( groups["type"] ) > print( groups["value"] ) > > Funciona bien, salvo que <value> incluya el signo de los dos puntos. > Por ejemplo, para > > one: two: three four > > Me devuelve type = "one: two" y value "three four", en lugar de "one" > y "two: three four" respectivamente. > > ?Como arreglo ese pattern para que el primer "lookahead" pare en el primer > ":"? > [Creo que se nota que tengo poca experiencia con regex] > > Muchas gracias. > Un saludo, > Jose > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es