28
我不是一個Ruby程序員,但因爲我是通過廣泛Ruby on Rails security guide讀書,我注意到本節:
在Ruby的正則表達式的一個常見缺陷是匹配字符串的開頭和結尾^和$ ,而不是\ A和\ z。
有誰知道這是否僅僅是一個美學或別的問題?我問,因爲我只使用了使用^
和$
的語言。
我不是一個Ruby程序員,但因爲我是通過廣泛Ruby on Rails security guide讀書,我注意到本節:
在Ruby的正則表達式的一個常見缺陷是匹配字符串的開頭和結尾^和$ ,而不是\ A和\ z。
有誰知道這是否僅僅是一個美學或別的問題?我問,因爲我只使用了使用^
和$
的語言。
這不是特定於Ruby; \A
和\Z
與^
和$
不是一回事。 ^
和$
是線錨的開始和結束,而\A
和\Z
是串錨的開始和結束。
紅寶石之處在於,它會自動使用「多行模式」(這使得具有每行^
和$
匹配的上述行爲)的正則表達式其他語言不同,但在大多數其他口味,你需要自己實現它,這這可能是該文章包含警告的原因。
嗨丹尼爾......感謝您的迴應!閱讀完後,我搜索了一下關於線尾和字符串錨點結尾之間差異的更多信息,並發現這些源也使用\ A和\ Z。這給我留下了最後一點困惑......如果它是一個大寫還是小寫的Z,它有沒有關係? RoR網站似乎在使用\ z。再次感謝! – treeface 2010-09-02 23:43:34
@treeface:他們不同。如果字符串以換行符結束,那麼'\ z'將錨定在字符串的末尾,'\ Z'將錨定在字符串末尾或最後一個換行符之前。因此,如果字符串以換行符結束,那麼'\ Z'將錨定在最後一個換行符之前,並且'\ z'將錨定在之後。 – 2010-09-03 00:18:08
@Jörg我沒有意識到這一點,謝謝你的信息:) – 2010-09-03 00:24:54