Ruby on rails 为什么Ruby';s正则表达式使用\A和\z而不是^和$?
我不是一名Ruby程序员,但当我阅读全文时,我注意到这一部分: Ruby正则表达式中的一个常见陷阱是将字符串的开头和结尾匹配为“^”和“$”,而不是\A和\zRuby 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特有的\A
和\Z
与^
和$
不是一回事^
和$
是行锚定的开始和结束,而\A
和\Z
是字符串锚定的开始和结束
Ruby与其他语言的不同之处在于,它自动为正则表达式使用“多行模式”(这可以实现前面提到的每行匹配^
和$
的行为),但在大多数其他风格中,您需要自己启用它,这可能就是文章中包含警告的原因
参考资料:你好,丹尼尔……感谢您的回复!阅读后,我四处搜索了一些关于线尾和线尾锚之间区别的更多信息,并找到了同样使用\a和\Z的源代码。这让我最后一点困惑……它是大写还是小写的Z重要吗?RoR站点似乎正在使用\z。再次感谢@特雷法斯:他们是不同的
\z
锚定在字符串的末尾,\z
锚定在字符串的末尾或最后一个换行符之前(如果字符串以换行符结尾)。因此,如果字符串以换行符结尾,\Z
在最后一个换行符之前定位,\Z
在最后一个换行符之后定位。