2010-09-02 2 views
28

Я не программист рубин, но, как я читал через обширную Ruby on Rails security guide, я заметил этот раздел:

Типичной ошибкой в ​​регулярных выражениях Руби должен соответствовать начало и конец струны от^и $ , вместо \ A и \ z.

Кто-нибудь знает, если это только вопрос эстетики или чего-то еще? Я спрашиваю, потому что я использовал только языки, которые используют ^ и $.

ответ

50

Это не относится к Ruby; \A и \Z - это не то же самое, что и ^ и $. ^ и $ являются начало и конец строки якорей, тогда как \A и \Z являются начало и конец строки анкерами.

рубин отличается от других языков, в том, что он автоматически использует «многострочный режим» (который позволяет вышеупомянутое поведение имеющих ^ и $ матча в каждую строку) для регулярных выражений, но и в большинстве других вкусов Вам необходимо включить его самостоятельно, что вероятно, почему эта статья содержит предупреждение.

Код: http://www.regular-expressions.info/anchors.html

+1

Hi Daniel ... спасибо за ответ! Прочитав его, я немного искал дополнительную информацию о разнице между концом строки и концом строковых якорей и нашел эти источники, чтобы также использовать \ A и \ Z. Это оставляет меня с последней точкой замешательства ... имеет ли значение, если это верхний или нижний регистр Z? Кажется, что сайт RoR использует \ z. Еще раз спасибо! – treeface

+21

@treeface: Они разные. '\ z' фиксируют в конце строки,' \ Z' фиксируют в конце строки или перед последней новой строкой, если строка заканчивается новой строкой. Итак, если строка заканчивается новой строкой, '\ Z' привязывается до последней новой строки и' \ z' якоря после. –

+0

@ Jörg Я не знал об этом, спасибо за информацию :) –