2011-07-11 34 views
8

Necesito hacer coincidir una suma de comprobación md5 en una expresión regular en un programa Ruby (en realidad, rieles). Descubrí que puedo unir cadenas hexadecimales con la secuencia \h, pero ya no puedo encontrar el enlace.Ruby: hexadecimal en expresiones regulares

Estoy usando esa secuencia y mi código está funcionando en Ruby 1.9.2. Puedo hacerlo funcionar incluso bajo IRB simple (por lo que no es una extensión de Rails).

ruby-1.9.2-p180 :007 > "123abcdf" =~ /^\h+$/; $~ 
=> #<MatchData "123abcdf"> 
ruby-1.9.2-p180 :008 > "123abcdfg" =~ /^\h+$/; $~ 
=> nil 

Sin embargo, mi IDE marca esa expresión como incorrecta y no puedo encontrar ninguna referencia que cite esa secuencia.

¿La secuencia \h es legal en Ruby Regex en cualquier entorno/versión o debo confiar en mi idea y reemplazarla por algo como [abcdef\d]?

+0

Debe verificar para/\ A \ h + \ Z/see http://sakurity.com/blog/2015/06/04/mongo_ruby_regexp.html – Daniel

Respuesta

10

Sí lo es. Consulte the official doc para obtener la documentación completa de expresiones regulares en Ruby.

Tenga en cuenta que \h coincidirá con letras mayúsculas también, por lo que es en realidad equivalente a [a-fA-F\d]

+0

Perfecto, es lo que necesito. Gracias por tu respuesta. – Fabio

+0

Una pequeña nota: también coincidirá con enteros, por lo que toda la clase es [a-fA-Z0-9]. – jdc

+0

@jdc: '\ d' es lo mismo que' [0-9] ' –

4

Según this \ h es parte de oniguruma, que creo que es estándar en Ruby 1.9.

+0

Buena referencia para expresiones regulares, gracias. – Fabio

+1

Correcto. \ h no funciona en Ruby 1.8.7 –

Cuestiones relacionadas