2010-09-02 22 views
28

我不是一個Ruby程序員,但因爲我是通過廣泛Ruby on Rails security guide讀書,我注意到本節:

在Ruby的正則表達式的一個常見缺陷是匹配字符串的開頭和結尾^和$ ,而不是\ A和\ z。

有誰知道這是否僅僅是一個美學或別的問題?我問,因爲我只使用了使用^$的語言。

回答

50

這不是特定於Ruby; \A\Z^$不是一回事。 ^$錨的開始和結束,而\A\Z錨的開始和結束。

紅寶石之處在於,它會自動使用「多行模式」(這使得具有每行^$匹配的上述行爲)的正則表達式其他語言不同,但在大多數其他口味,你需要自己實現它,這這可能是該文章包含警告的原因。

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

+1

嗨丹尼爾......感謝您的迴應!閱讀完後,我搜索了一下關於線尾和字符串錨點結尾之間差異的更多信息,並發現這些源也使用\ A和\ Z。這給我留下了最後一點困惑......如果它是一個大寫還是小寫的Z,它有沒有關係? RoR網站似乎在使用\ z。再次感謝! – treeface 2010-09-02 23:43:34

+21

@treeface:他們不同。如果字符串以換行符結束,那麼'\ z'將錨定在字符串的末尾,'\ Z'將錨定在字符串末尾或最後一個換行符之前。因此,如果字符串以換行符結束,那麼'\ Z'將錨定在最後一個換行符之前,並且'\ z'將錨定在之後。 – 2010-09-03 00:18:08

+0

@Jörg我沒有意識到這一點,謝謝你的信息:) – 2010-09-03 00:24:54

相關問題