Morton 24 de julio de 2011 a las 08.04
   Imprimir artículo
elWebmaster.com

Ruby para principiantes: Expresiones regulares (2° parte)


ruby-wideEn la primera parte de este artículo, aprendimos algunos principios básicos sobre expresiones regulares en Ruby. En esta edición, terminaremos de conocer los diversos métodos existentes.

Ahora, nuestras variables match1 y match2 contienen los objetos MatchData (ya que nuestras comparaciones fueron exitosas). Así que veamos cómo podemos usar uno de esos objetos MatchData.

Verás que hay distintas maneras de obtener la misma información de nuestro objeto MatchData. Empezaremos con el string comparado: Si quieres ver el contenido del string original que fue comparado contra el regexp, usa el método string. También puedes usar el método de las llaves [], y pasar el parámetro 0:

  1. match1.string # => "Joe Schmo, Plumber"  
  2.    match1[0] # (es lo mismo que match1.[] 0 ) => "Joe Schmo, Plumber"

La expresión regular, por otro lado, puedes hallarla con el método regexp:

  1. match1.regex # => wsw,s[ws]

Ahora, vamos a obtener los grupos comparados, el objetivo de todo este ejercicio. Primero, podremos obtenerlos con índices numerados en mismo objeto MatchData, en el orden que los comparamos:

  1. match1[1] # => "Joe"  
  2.    match1[2] # => "Schmo"  
  3.    match1[3] # => "Plumber"  
  4.      
  5.     match2[1] # => "Stephen"  
  6.    match2[2] # => "Harper"  
  7.    match2[3] # => "Prime Minister"

Además, existe otra manera de obtener esas capturas: con las capturas de las propiedades del array (al ser un array, tiene base en cero).

  1. match1.captures[0] # => "Joe"  
  2.      
  3.     match2.captures[2] # => "Prime Minister"

Finalmente, hay una tercera manera de obtenerlas. Cuando ejecutas una comparación =~, Ruby llena una serie de variables globales, uno por cada grupo capturado en regexp:

  1. "Andrew Burgess".match /(\w*)\s(\w*)/  # returns a MatchData object, but we're ignoring that  
  2.      
  3.     $1 # => "Andrew"  
  4.    $2 # => "Burgess"

Volviendo a los objetos MatchData, si deseas encontrar el index de un string de una determinada captura, pasa el número de capturas a la función begin. Alternativamente, puedes usar end para ver cuando la captura termina.

  1. m = "Nettuts+ is the best".match /(is) (the)/  
  2.      
  3.     m[1] # => "is"  
  4.    m.begin 1 # => 8  
  5.    m[2] # => "end"  
  6.    m.end 2   # => 14

También están los métodos pre_match y post_match: estos muestran parte del string que viene antes y después de la coincidencia, respectivamente.

  1. # m from above  
  2.    m.pre_match  # => "Nettuts+ "  
  3.    m.post_match # => " best"

Y esto es básicamente, trabajar con expresiones regulares en Ruby.

En la tercera parte, profundizaremos en el uso de las expresiones regulares. ¡Hasta la próxima!

Fuente original del artículo: Net Tuts +
Traducción realizada por
elWebmaster.com


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (2)

  1. Myrta Candanedo dice:

    Me gustó esta pequeña clase. Como no soy programadora voy a vaeriguar el uso de esta forma abreviada de operadores para luego continuar con la parte 2.

  2. marga dice:

    unsaludo me gustan muchos los talleres de ustedes estan muy completos y entendibles…

    pero porque no siguieron con ruby me encantaria un taller de este lenguaje sino seria mucho pedir

    un saludo y espero tomen encuenta eel comentario

    buen dia…

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder