【问题标题】:Why do Ruby's regular expressions use \A and \z instead of ^ and $?为什么 Ruby 的正则表达式使用 \A 和 \z 而不是 ^ 和 $?
【发布时间】:2015-06-04 20:38:49
【问题描述】:

我不是 Ruby 程序员,但是当我阅读大量的 Ruby on Rails security guide 时,我注意到了这个部分:

Ruby 正则表达式的一个常见缺陷是用 ^ 和 $ 匹配字符串的开头和结尾,而不是 \A 和 \z。

有谁知道这只是美学问题还是其他问题?我问是因为我只使用了使用^$ 的语言。

【问题讨论】:

    标签: ruby-on-rails ruby regex


    【解决方案1】:

    这不是 Ruby 特有的; \A\Z^$ 不同。 ^$line 锚点的开始和结束,而 \A\Zstring 锚点的开始和结束。

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

    参考:http://www.regular-expressions.info/anchors.html

    【讨论】:

    • 嗨丹尼尔...感谢您的回复!阅读后,我搜索了一些关于行尾和字符串尾锚之间区别的更多信息,发现这些来源也使用 \A 和 \Z。这给我留下了最后一点困惑......它是大写还是小写Z有关系吗? RoR 站点似乎正在使用 \z。再次感谢!
    • @treeface:它们是不同的。 \z 锚定在字符串的末尾,\Z 锚定在字符串的末尾或最后一个换行符之前,如果字符串以换行符结尾。因此,如果字符串以换行符结尾,\Z 锚定在最后一个换行符之前,\z 锚定在之后。
    猜你喜欢
    • 2011-08-26
    • 2010-10-09
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多