2010-10-13 23 views
5

In Ruby entrambe le espressioni sembrano fare cose simili:Qual è la differenza tra/it/e/ Ait Z/

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

Così ho un chiedevo che cosa è la differenza tra ^ - \A e $ - \Z e come scegliere quale utilizzare?

+0

Non c'è un errore di battitura nel tuo esempio? Dovrebbe essere '/ \ Ait \ Z /', giusto? –

+0

Sì, questo è il tipo. Grazie. –

+0

@All: Ti chiedi quale risposta dovrei accettare in quanto tutte sono molto chiare? Lo farò per il numero di voti positivi in ​​un paio di giorni probabilmente. –

risposta

10

La differenza è importante solo quando la stringa che si sono corrispondenti contro può contenere nuove linee. \A corrisponde all'inizio di una stringa. ^ corrisponde all'inizio di una stringa o immediatamente dopo una nuova riga. Allo stesso modo \Z corrisponde solo alla fine della stringa, ma $ corrisponde alla fine della stringa o alla fine di una riga.

Ad esempio, l'espressione regolare /^world$/ corrisponde alla seconda riga di "ciao \ nworld" ma l'espressione /\Aworld\Z/ non corrisponde.

2

^ - inizio della linea
\A - inizio della stringa

$ - fine linea
\Z - fine della stringa

5

Nei motori regex che supportano multilinea espressioni regolari, ^ e $ sono di solito utilizzati per l'inizio e la fine della linea di marcatori.

\A e \Z sono per inizio e fine di marcatori stringa .

Ad esempio, la stringa:

Hello, my names 
are Bob and James 

sarebbe partita ames$ due volte (per i nomi e James), ma ames\Z solo una volta (per James).

Problemi correlati