>
> Pero voy a echar un vistazo a "greedy".
No tiene mucha ciencia. Cuando aplicamos una expresión regular se nos
presenta una duda. ¿Debería buscarse *la máxima extensión de texto que
cumpla con ella, o sólo la mínima*? La primera opción es la "codiciosa" y
es la que se aplica si no indicas lo c
Exacto, gracias por la corrección.
Alexis Roda igorleak hau idatzi zuen
(2020 abu. 17, al. 17:01):
> El ? va junto al * que queremos que no sea codicioso:
>
> pattern = re.compile("^(?P(.*?)): (?P(.*))$")
>
> Ponerlo junto al : hace que ese carácter sea opcional.
>
> In [20]: p = re.compile("^(?
El ? va junto al * que queremos que no sea codicioso:
pattern = re.compile("^(?P(.*?)): (?P(.*))$")
Ponerlo junto al : hace que ese carácter sea opcional.
In [20]: p = re.compile("^(?P(.*)):? (?P(.*))$")
In [21]: l = "hola mundo"
In [22]: m = p.match(l)
In [23]: m.groupdict()
Out[23]: {'type'
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 del dia dl., 17 d’ag.
2020 a les 15:44:
> H
Uuups, te he pegado una expresión que está mal. La correcta es esta:
pattern = re.compile("^(?P(.*)):? (?P(.*))$")
Perdona las molestias.
Jose Caballero igorleak hau idatzi zuen (2020
abu. 17, al. 16:37):
> no parece:
>
> >>> p = re.compile("^(?P(.*)):? (?P([^:]*))$")
> >>>
> >>> l = "type: wo
no parece:
>>> p = re.compile("^(?P(.*)):? (?P([^:]*))$")
>>>
>>> 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 Garmen
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(.*)):? (?P([^:]*))$")
Si buscas "greedy" en el apartado de la librería "re" en la documentacion
ofic
Hola,
tengo una serie de lineas, todas con el mismo formato:
:
donde es una sola palabra, y es una frase.
Intentaba "parsearlas" con algo como esto:
pattern = re.compile("^(?P(.*)): (?P(.*))$")
parse = pattern.match(line)
groups = parse.groupdict()
print( groups["type"] )