[Python-es] problema con "regular expression"

Ander Garmendia kelertxiki en gmail.com
Lun Ago 17 10:42:44 EDT 2020


Uuups, te he pegado una expresión que está mal. La correcta es esta:

pattern = re.compile("^(?P<type>(.*)):? (?P<value>(.*))$")

Perdona las molestias.

Jose Caballero <jcaballero.hep en gmail.com> igorleak hau idatzi zuen (2020
abu. 17, al. 16:37):

> no parece:
>
> >>> p = re.compile("^(?P<type>(.*)):? (?P<value>([^:]*))$")
> >>>
> >>> l = "type: word: foo bar"
> >>>
> >>> m = p.match(l)
> >>> print m.groupdict()
> {'type': 'type: word: foo', 'value': 'bar'}
> >>>
>
> Pero voy a echar un vistazo a "greedy".
> Muchas gracias.
>
> Jose
>
> El lun., 17 ago. 2020 a las 15:25, Ander Garmendia
> (<kelertxiki en gmail.com>) escribió:
> >
> > Hola,
> >
> > Las expresiones tipo(. *) son "greedy", esto es se expanden "a todo lo
> que pillen". Si quieres limitar el match al primer grupo, añade un ? al
> carácter de corte:
> >
> >  pattern = re.compile("^(?P<type>(.*)):? (?P<value>([^:]*))$")
> >
> > Si buscas "greedy" en el apartado de la librería "re" en la
> documentacion oficial, lo explican mucho mejor.
> >
> > Un saludo.
> >
> > Jose Caballero <jcaballero.hep en gmail.com> igorleak hau idatzi zuen
> (2020 abu. 17, al. 15:45):
> >>
> >> 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 en python.org
> >> https://mail.python.org/mailman/listinfo/python-es
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > https://mail.python.org/mailman/listinfo/python-es
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200817/27a463f9/attachment.html>


Más información sobre la lista de distribución Python-es