Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Ruby';s正则表达式使用\A和\z而不是^和$?_Ruby On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails 为什么Ruby';s正则表达式使用\A和\z而不是^和$?

Ruby on rails 为什么Ruby';s正则表达式使用\A和\z而不是^和$?,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我不是一名Ruby程序员,但当我阅读全文时,我注意到这一部分: Ruby正则表达式中的一个常见陷阱是将字符串的开头和结尾匹配为“^”和“$”,而不是\A和\z 有人知道这是美学问题还是其他问题吗?我这样问是因为我只使用过使用^和$的语言,这不是Ruby特有的\A和\Z与^和$不是一回事^和$是行锚定的开始和结束,而\A和\Z是字符串锚定的开始和结束 Ruby与其他语言的不同之处在于,它自动为正则表达式使用“多行模式”(这可以实现前面提到的每行匹配^和$的行为),但在大多数其他风格中,您需要自己启

我不是一名Ruby程序员,但当我阅读全文时,我注意到这一部分:

Ruby正则表达式中的一个常见陷阱是将字符串的开头和结尾匹配为“^”和“$”,而不是\A和\z


有人知道这是美学问题还是其他问题吗?我这样问是因为我只使用过使用
^
$

的语言,这不是Ruby特有的
\A
\Z
^
$
不是一回事
^
$
锚定的开始和结束,而
\A
\Z
字符串锚定的开始和结束

Ruby与其他语言的不同之处在于,它自动为正则表达式使用“多行模式”(这可以实现前面提到的每行匹配
^
$
的行为),但在大多数其他风格中,您需要自己启用它,这可能就是文章中包含警告的原因


参考资料:

你好,丹尼尔……感谢您的回复!阅读后,我四处搜索了一些关于线尾和线尾锚之间区别的更多信息,并找到了同样使用\a和\Z的源代码。这让我最后一点困惑……它是大写还是小写的Z重要吗?RoR站点似乎正在使用\z。再次感谢@特雷法斯:他们是不同的
\z
锚定在字符串的末尾,
\z
锚定在字符串的末尾或最后一个换行符之前(如果字符串以换行符结尾)。因此,如果字符串以换行符结尾,
\Z
在最后一个换行符之前定位,
\Z
在最后一个换行符之后定位。