В чем разница между / it / и / \ Ait \ Z / - PullRequest
5 голосов
/ 13 октября 2010

В Ruby оба выражения, кажется, делают схожие вещи:

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

Так что мне интересно, в чем разница между ^ - \A и $ - \Z и как выбрать, какой использовать?

Ответы [ 3 ]

10 голосов
/ 13 октября 2010

Разница важна только тогда, когда совпадающая строка может содержать новые строки. \A соответствует началу строки. ^ соответствует либо началу строки, либо сразу после новой строки. Точно так же \Z соответствует только концу строки, но $ соответствует концу строки или концу строки.

Например, регулярное выражение /^world$/ соответствует второй строке "hello \ nworld", но выражение /\Aworld\Z/ не соответствует.

5 голосов
/ 13 октября 2010

В механизмах регулярных выражений, которые поддерживают многострочные регулярные выражения, ^ и $ обычно используются для начала и конца маркеров line .

\A и \Z предназначены для начала и конца строки маркеров.

Например, строка:

Hello, my names
are Bob and James

будет соответствовать ames$ дважды (для имен и Джеймса), но ames\Z только один раз (для Джеймса).

2 голосов
/ 13 октября 2010

^ - начало строки
\A - начало строки

$ - конец строки
\Z - конец строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...