2011-04-25 24 views
81

En ruby, leí algunos de los operadores, pero no pude encontrar =~. ¿Qué es =~ para, o qué significa? El programa que vi tieneruby ​​operator "= ~"

regexs = (/\d+/) 
a = somestring 
if a =~ regexs 

Creo que si estaba comparando somestring igual a los dígitos, pero, ¿hay algún otro uso, y lo que es la definición apropiada del operador =~?

+1

Si quieres jugar con la expresión regular de Ruby, puedo recomendar http://rubular.com/ –

+3

¿Podemos marcar la otra pregunta como un duplicado, en lugar de esta? ** Este tiene más votos **, en términos tanto de la pregunta en sí misma como de las respuestas. Además, al buscar 'ruby = ~ operator', ** esta pregunta es el primer hit relevante ** en Google, Yahoo, Bing y DuckDuckGo en mis pruebas, lo que también explica por qué este tiene más votos. – ryenus

+0

De acuerdo con @ryenus. – Padawan

Respuesta

123

El operador =~ coincide con la expresión regular en una cadena, y devuelve el desplazamiento de la coincidencia de la cadena si se encuentra, de lo contrario, nil.

ruby-1.9.2-p136 :003 > /mi/ =~ "hi mike" 
=> 3 
ruby-1.9.2-p136 :004 > "hi mike" =~ /mi/ 
=> 3 

ruby-1.9.2-p136 :005 > "mike" =~ /ruby/ 
=> nil 

Puede colocar la cuerda/expresión regular a cada lado del operador como puede ver arriba.

12

= ~ es un operador para hacer coincidir expresiones regulares, que devolverá el índice del inicio de la coincidencia (o nulo si no hay coincidencia).

Consulte here para la documentación.

28

Este operador compara cadenas con expresiones regulares.

>> s = 'how now brown cow' 

>> s =~ /cow/ 
=> 14 
>> s =~ /now/ 
=> 4 
>> s =~ /cat/ 
=> nil 

Si la cadena coincide con la expresión, el operador devuelve el desplazamiento, y si no lo hace, devuelve nulo. Es un poco más complicado que eso: see documentation here; it's a method in the String class.

+1

La documentación es inútil. He estado buscando 45 minutos, esta es la mejor explicación que he encontrado. Gracias. – Padawan