2010-09-02 11 views
28

No soy un programador de Ruby, pero como yo estaba leyendo a través de la extensa Ruby on Rails security guide, me di cuenta de esta sección:

Un error común en las expresiones regulares de Ruby es para que coincida con principio y al final de la cadena por^y $ , en lugar de \ A y \ z.

¿Alguien sabe si esto es solo cuestión de estética u otra cosa? Lo pregunto porque solo he usado idiomas que usan ^ y $.

Respuesta

50

Esto no es específico de Ruby; \A y \Z no son lo mismo que ^ y $. ^ y $ son el inicio y el final de la línea anclas, mientras que \A y \Z son el inicio y el final de la cadena de anclas.

Rubí se diferencia de otros idiomas en que se utiliza automáticamente "modo multilínea" (que permite el comportamiento mencionado de tener ^ y $ partido por línea) para expresiones regulares, pero en la mayoría de los otros sabores necesita habilitar usted mismo, que es probable por qué ese artículo contiene la advertencia.

Referencia: http://www.regular-expressions.info/anchors.html

+1

Hola Daniel ... gracias por la respuesta! Después de leerlo, busqué un poco para obtener más información sobre la diferencia entre el final de la línea y el final de los anclajes de cadena y encontré esas fuentes para usar también \ A y \ Z. Esto me deja con un último punto de confusión ... ¿Importa si es una Z superior o minúscula? El sitio RoR parece estar usando \ z. ¡Gracias de nuevo! – treeface

+21

@treeface: Son diferentes. '\ z' se ancla al final de la cadena,' \ Z' se ancla al final de la cadena o antes de la última línea nueva, si la cadena termina con una nueva línea. Por lo tanto, si la cadena termina con una línea nueva, '\ Z' se ancla antes de esa última línea y' \ z' se ancla después. –

+0

@ Jörg No era consciente de eso, gracias por la información :) –

Cuestiones relacionadas