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

Dmy*_*iak 5 ruby regex ruby-on-rails

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

'it' =~ /^it$/   # 0
'it' =~ /\Ait\Z/ # 0
# but
/^it$/ == /\Ait\Z/ # false
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 10

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

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


pax*_*blo 5

在正则表达式引擎,支持多行的正则表达式,^$通常用于开始和结束标志.

\A\Z用于字符串标记的开始和结束.

例如,字符串:

Hello, my names
are Bob and James
Run Code Online (Sandbox Code Playgroud)

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