2010-10-13 12 views
5

En Rubí ambas expresiones parecen hacer cosas similares:¿Cuál es la diferencia entre/it/y/ Ait Z/

'it' =~ /^it$/ # 0 
'it' =~ /\Ait\Z/ # 0 
# but 
/^it$/ == /\Ait\Z/ # false 

Así que un preguntando ¿cuál es la diferencia entre ^ - \A y $ - \Z y cómo elegir cuál usar?

+0

¿No hay un error ortográfico en su ejemplo? Debería ser '/ \ Ait \ Z /', ¿verdad? –

+0

Sí, ese es el tipo. Gracias. –

+0

@Todo: ¿Me pregunto qué respuesta debería aceptar, ya que todas están muy claras? Lo haré por el número de Up-Votes en un par de días, probablemente. –

Respuesta

10

La diferencia sólo es importante cuando la cadena que está emparejando contra puede contener nuevas líneas. \A coincide con el inicio de una cadena. ^ coincide con el comienzo de una cadena o inmediatamente después de una nueva línea. De manera similar, \Z solo coincide con el final de la cadena, pero $ coincide con el final de la cadena o el final de una línea.

Por ejemplo, la expresión regular /^world$/ coincide con la segunda línea de "hello \ nworld" pero la expresión /\Aworld\Z/ no coincide.

2

^ - inicio de la línea
\A - inicio de la cadena de

$ - final de la línea
\Z - final de la cadena

5

En los motores de expresiones regulares que soportan expresiones regulares de múltiples líneas, ^ y $ se utilizan generalmente para el inicio y el final de la línea marcadores.

\A y \Z son para el inicio y el final de la cadena marcadores.

Por ejemplo, la cadena:

Hello, my names 
are Bob and James 

coincidiría ames$ dos veces (para los nombres y James), pero ames\Z sólo una vez (para James).

Cuestiones relacionadas