<div dir="auto">Exacto, gracias por la corrección.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Alexis Roda <<a href="mailto:alexis.roda.villalonga@gmail.com">alexis.roda.villalonga@gmail.com</a>> igorleak hau idatzi zuen (2020 abu. 17, al. 17:01):<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="font-family:sans-serif;font-size:12.8px">El ? va junto al * que queremos que no sea codicioso:</span><br></div><div><span style="font-size:12.8px;font-family:sans-serif"><br></span></div><div dir="ltr"><span style="font-size:12.8px;font-family:sans-serif">pattern = re.compile("^(?P<type>(.*?)): (?P<value>(.*))$")</span><br><span style="font-family:sans-serif;font-size:12.8px"></span></div><div dir="ltr"><span style="font-size:12.8px;font-family:sans-serif"><br></span></div><div><span style="font-size:12.8px;font-family:sans-serif">Ponerlo junto al : hace que ese carácter sea opcional.</span></div><div><span style="font-size:12.8px;font-family:sans-serif"><br></span></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><div><span style="font-size:12.8px"><font face="monospace">In [20]: p = re.compile("^(?P<type>(.*)):? (?P<value>(.*))$")</font></span></div></div></div></div><div><div><div><div><span style="font-size:12.8px"><font face="monospace"><br></font></span></div></div></div></div><div><div><div><div><span style="font-size:12.8px"><font face="monospace">In [21]: l = "hola mundo"</font></span></div></div></div></div><div><div><div><div><span style="font-size:12.8px"><font face="monospace"><br></font></span></div></div></div></div><div><div><div><div><span style="font-size:12.8px"><font face="monospace">In [22]: m = p.match(l)</font></span></div></div></div></div><div><div><div><div><span style="font-size:12.8px"><font face="monospace"><br></font></span></div></div></div></div><div><div><div><div><font face="monospace"><span style="font-size:12.8px">In [23]: m.groupdict()</span></font></div></div></div></div><div><div><div><div><span style="font-size:12.8px"><font face="monospace">Out[23]: {'type': 'hola', 'value': 'mundo'}</font></span></div></div></div></div></blockquote><div dir="ltr"><div dir="ltr"><div><div style="font-family:sans-serif;font-size:12.8px"><br></div></div><div style="font-family:sans-serif;font-size:12.8px"><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Missatge de Ander Garmendia <<a href="mailto:kelertxiki@gmail.com" target="_blank" rel="noreferrer">kelertxiki@gmail.com</a>> del dia dl., 17 d’ag. 2020 a les 16:43:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Uuups, te he pegado una expresión que está mal. La correcta es esta:<div dir="auto"><br></div><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px">pattern = re.compile("^(?P<type>(.*)):? (?P<value>(.*))$")</span><br></div><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px"><br></span></div><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px">Perdona las molestias. </span></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Jose Caballero <<a href="mailto:jcaballero.hep@gmail.com" target="_blank" rel="noreferrer">jcaballero.hep@gmail.com</a>> igorleak hau idatzi zuen (2020 abu. 17, al. 16:37):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">no parece:<br>
<br>
>>> p = re.compile("^(?P<type>(.*)):? (?P<value>([^:]*))$")<br>
>>><br>
>>> l = "type: word: foo bar"<br>
>>><br>
>>> m = p.match(l)<br>
>>> print m.groupdict()<br>
{'type': 'type: word: foo', 'value': 'bar'}<br>
>>><br>
<br>
Pero voy a echar un vistazo a "greedy".<br>
Muchas gracias.<br>
<br>
Jose<br>
<br>
El lun., 17 ago. 2020 a las 15:25, Ander Garmendia<br>
(<<a href="mailto:kelertxiki@gmail.com" rel="noreferrer noreferrer" target="_blank">kelertxiki@gmail.com</a>>) escribió:<br>
><br>
> Hola,<br>
><br>
> 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:<br>
><br>
>  pattern = re.compile("^(?P<type>(.*)):? (?P<value>([^:]*))$")<br>
><br>
> Si buscas "greedy" en el apartado de la librería "re" en la documentacion oficial, lo explican mucho mejor.<br>
><br>
> Un saludo.<br>
><br>
> Jose Caballero <<a href="mailto:jcaballero.hep@gmail.com" rel="noreferrer noreferrer" target="_blank">jcaballero.hep@gmail.com</a>> igorleak hau idatzi zuen (2020 abu. 17, al. 15:45):<br>
>><br>
>> Hola,<br>
>><br>
>> tengo una serie de lineas, todas con el mismo formato:<br>
>><br>
>>     <type>: <value><br>
>><br>
>> donde <type> es una sola palabra, y <value> es una frase.<br>
>> Intentaba "parsearlas" con algo como esto:<br>
>><br>
>>     pattern = re.compile("^(?P<type>(.*)): (?P<value>(.*))$")<br>
>>     parse = pattern.match(line)<br>
>>     groups = parse.groupdict()<br>
>>     print( groups["type"] )<br>
>>     print( groups["value"] )<br>
>><br>
>> Funciona bien, salvo que <value> incluya el signo de los dos puntos.<br>
>> Por ejemplo, para<br>
>><br>
>>          one: two: three four<br>
>><br>
>> Me devuelve type = "one: two" y value "three four", en lugar de "one"<br>
>> y "two: three four" respectivamente.<br>
>><br>
>> ?Como arreglo ese pattern para que el primer "lookahead" pare en el primer ":"?<br>
>> [Creo que se nota que tengo poca experiencia con regex]<br>
>><br>
>> Muchas gracias.<br>
>> Un saludo,<br>
>> Jose<br>
>> _______________________________________________<br>
>> Python-es mailing list<br>
>> <a href="mailto:Python-es@python.org" rel="noreferrer noreferrer" target="_blank">Python-es@python.org</a><br>
>> <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
><br>
> _______________________________________________<br>
> Python-es mailing list<br>
> <a href="mailto:Python-es@python.org" rel="noreferrer noreferrer" target="_blank">Python-es@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" rel="noreferrer noreferrer" target="_blank">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank" rel="noreferrer">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div></div>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank" rel="noreferrer">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div>