在Ruby中,两个表达式似乎都做了类似的事情:
'it' =~ /^it$/ # 0
'it' =~ /\Ait\Z/ # 0
# but
/^it$/ == /\Ait\Z/ # false
所以我想知道^
- \A
和$
- \Z
之间有什么区别,以及如何选择使用哪一个?
答案 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
- 字符串结尾