Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Ricardo Cárdenes
> > 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

Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Ander Garmendia
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("^(?

Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Alexis Roda
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'

Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Alexis Roda
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

Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Ander Garmendia
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

Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Jose Caballero
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

Re: [Python-es] problema con "regular expression"

2020-08-17 Por tema Ander Garmendia
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

[Python-es] problema con "regular expression"

2020-08-17 Por tema Jose Caballero
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"] )