2011-12-10 12 views
10

Estoy tratando de crear una consulta de coincidencia que selecciona el texto de una cadena entre dos palabras. Parece que no puedo entender cómo hacer que la búsqueda sea insensible. Por ejemplo, consideremos el texto:ruby ​​string match ignorar el caso

contents = "cat 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec blandit feugiat mi, eu lacinia quam tincidunt eu. Donec eleifend adipiscing neque, in porta dolor vestibulum at. Curabitur id elit vitae nunc feugiat varius. Maecenas euismod euismod mi, eu blandit lectus. 
dog" 

el código de rubí me devuelven el código latino entre el gato palabras y el perro es

contents.match(/cat(.*)dog/m)[1].strip 

En el momento de mi consulta "partido" sólo funciona si el gato y el el perro está en minúscula, pero necesito atender si el gato y el perro están en mayúscula o la primera letra es en mayúscula.

No estoy seguro de dónde colocar el operador/i.

Respuesta

19

Al lado de la "m":

contents.match(/cat(.*)dog/im)[1].strip 
+0

Ni siquiera creo que la "m" está haciendo nada en esta expresión. "m" se usa para hacer que '^' y '$' coincidan con el inicio/final de una línea, en lugar del inicio/final de la entrada. – d11wtq

+1

@ d11wtq - Acabo de probarlo en IRB y parece marcar la diferencia. Creo que permite el. personaje para que coincida con las nuevas líneas. –

+0

gracias @coder_tim, no me di cuenta que era así de simple. – ekynox

Cuestiones relacionadas