regex, buscar cadenas con comillas

Chema Cortes pych3m4 en gmail.com
Mar Dic 11 12:50:48 CET 2007


El 10/12/07, Oswaldo Hernández <listas en soft-com.es> escribió:

> Lo que pretendia era hacer un replace unicamente en las cadenas que van entre comillas dejando el
> resto intacto. El split me parecio una buena idea ya que con esa expresion me devuelve todas las
> partes y en su orden.
> Se que el regex tiene un 'replace', pero como no soy muy ducho con el, y corria un poquito de prisa
> al final quedo asi:
>
>      def FiltraSQL(self, sql):
>          # ajustes en sentencia sql antes de su proceso
>
>          # dividir sentencia en fragmentos para modificar los entrecomillados y volver a montar
>          partes = re.split("('.*?')|(\".*?\")", sql)
>          # eliminar Nones
>          while None in partes:
>              partes.remove(None)
>
>          for n,p in zip(range(len(partes)),partes):
>              if p[0] == "'" or p[0] == '"':
>                  partes[n] = p.replace("*", "%")
>
>          return "".join(partes)
>
> Imagino que se podrá optimizar bastante, pero de momento me ha valido.

Si ya funciona, no lo arregles; pero si quieres ver cómo se puede hacer mejor:

def repl(m):
  return m.group(0).replace("*","%")

sql=re.sub("('.*?')|(\".*?\")", repl, sql)
_______________________________________________
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