regex, buscar cadenas con comillas

Oswaldo Hernández listas en soft-com.es
Vie Dic 7 14:00:00 CET 2007


Antonio Beamud Montero escribió:
> El vie, 07-12-2007 a las 13:30 +0100, Oswaldo Hernández escribió:
>> Hola a todos,
>>
>> Estoy intentando localizar en una string cadenas que van entre comillas.
>>
>>  >>> c = "cadena de ejemplo con 'texto entre comillas'. Fin"
>>  >>> m = re.split("('.*')|(\".*\")", c)
>>  >>> m
>> ['cadena de ejemplo con ', "'texto entre comillas'", None, '. Fin']
> 
>> Hasta aqui bien (excepto que no entiendo el None).
>> El problema se me presenta cuando hay mas de un texto entrecomillado:
>>
>>  >>> c = "cadena de ejemplo con 'texto entre comillas' y 'otro texto mas'. Fin"
>>  >>> m = re.split("('.*')|(\".*\")*", c)
>>  >>> m
>> ['cadena de ejemplo con ', "'texto entre comillas' y 'otro texto mas'", None, '. Fin']
>>
>> En este caso me toma desde la comilla inicial del primer texto hasta el cierre del ultimo como una 
>> sola cadena.
> 
> 
> A bote pronto, con que cambies el .* por .*? para hacerlo non-greedy, te
> debe funcionar sin problemas. 
> 

 >>> c = "ejemplo con 'entre comillas', y 'otro mas' y \"un tercero\" Fin"
 >>> m = re.split("('.*?')|(\".*?\")", c)
 >>> m
['ejemplo con ', "'entre comillas'", None, ', y ', "'otro mas'", None, ' y ', None, '"un tercero"', 
' Fin']

Perfecto :)

Gracias.



-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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