/ it /和/ \ Ait \ Z /有什么区别

时间:2010-10-13 06:37:26

标签: ruby-on-rails ruby regex

在Ruby中,两个表达式似乎都做了类似的事情:

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

所以我想知道^ - \A$ - \Z之间有什么区别,以及如何选择使用哪一个?

3 个答案:

答案 0 :(得分:10)

只有当您匹配的字符串可以包含新行时,差别才很重要。 \A匹配字符串的开头。 ^匹配字符串的开头或紧跟新行之后。类似地,\Z仅匹配字符串的结尾,但$匹配字符串的结尾或行的结尾。

例如,正则表达式/^world$/匹配“hello \ nworld”的第二行,但表达式/\Aworld\Z/无法匹配。

答案 1 :(得分:5)

在支持多行正则表达式的正则表达式引擎中,^$通常用于标记的开头和结尾。

\A\Z用于字符串标记的开头和结尾。

例如,字符串:

Hello, my names
are Bob and James

将匹配ames$两次(对于名字和詹姆斯),但ames\Z只匹配一次(对于詹姆斯)。

答案 2 :(得分:2)

^ - 行的开头
\A - 字符串的开头

$ - 行尾 \Z - 字符串结尾