[Ror-es] Más de expresiones regulares

Luis Villegas
Tue Jul 31 15:43:07 GMT 2007


Buenas, a ver si me entero de cómo hacer cosas con expresiones regulares,
porque no me aclaro. Llevo un par de horas con el método prueba-error para
sacar algo y no hay manera.

El es que lo que quiero es sacar de una sentencia sql, las columnas a las
que se hace consulta.

Y estos son los 3 posibles casos:

select a.login, a.nombre from usuarios
select a.login as acceso, a.nombre as el_nombre from usuarios
select a.login acceso, a.nombre el_nombre from usuarios

Sé que hacerlo es algo tan fácil como crear una expresión regular que haga
lo siguiente:
-corte lo que hay entre el select y el from,
-del resultado sacar lo que está separado por las comas,
-y de cada uno de los elementos resultantes, sacar lo que hay más a la
derecha, separado por espacio o punto...

Yo lo he hecho a lo bruto, pero me molesta tener que codificar tanto
pudiendo hacerlo mucho más fácil.
Me queda así:

    query = "select a.login acceso, a.nombre as el_nombre, a.password from
usuarios"
    aux = query.downcase.split(/from/)[0]
    array_aux = aux.gsub(/select/,"").split(",")
    retorno = []
    array_aux.each do |cadena|
      aux = cadena.strip
      for aux2 in aux.split(" ")
        aux2
      end
      aux2 = aux2.split(".")[1] if aux2=~/\./
      retorno << aux2
    end
    retorno
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20070731/d78991ba/attachment.htm