2010-10-13 1 views
5

In Ruby scheinen beide Ausdrücke ähnliche Dinge zu tun:Was ist der Unterschied zwischen/it/und/ Ait Z/

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

Also habe ich eine frage mich, was ist der Unterschied zwischen ^ - \A und $ - \Z und wie wählen Sie, welche zu verwenden?

+0

Gibt es in Ihrem Beispiel keinen Tippfehler? Sollte '/ \ Ait \ Z /' sein, oder? –

+0

Ja, das ist der Typ. Vielen Dank. –

+0

@All: Fragen, welche Antwort ich akzeptieren sollte, da alle von ihnen sehr klar sind? Ich werde es wahrscheinlich in ein paar Tagen nach der Anzahl der Up-Votes tun. –

Antwort

10

Der Unterschied ist nur wichtig, wenn die Zeichenfolge, die Sie gegen übereinstimmen, sind enthalten neue Zeilen. \A entspricht dem Anfang einer Zeichenfolge. ^ entspricht entweder dem Anfang einer Zeichenfolge oder unmittelbar nach einer neuen Zeile. In ähnlicher Weise entspricht \Z nur dem Ende der Zeichenfolge, aber $ entspricht dem Ende der Zeichenfolge oder dem Ende einer Zeile.

Zum Beispiel entspricht der reguläre Ausdruck /^world$/ der zweiten Zeile von "Hallo \ nworld", aber der Ausdruck /\Aworld\Z/ schlägt fehl.

2

^ - Zeilenanfang
\A - Beginn der Zeichenfolge

$ - Ende der Zeile
\Z - Ende der Zeichenkette

5

In regex Motoren, die mehrzeiligen reguläre Ausdrücke unterstützen, ^ und $ sind in der Regel für Anfang und Ende der Linie Marker verwendet.

\A und \Z sind für Anfang und Ende Zeichenfolge Marker.

Zum Beispiel der Zeichenfolge:

Hello, my names 
are Bob and James 

ames$ zweimal entsprechen würde (für Namen und James), aber ames\Z nur einmal (James).

Verwandte Themen