[Python-es] problema con "regular expression"
Jose Caballero
jcaballero.hep en gmail.com
Lun Ago 17 10:35:44 EDT 2020
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
Más información sobre la lista de distribución Python-es