Подтвердить что ты не робот

Когда следует использовать \A в регулярном выражении?

Сопряжение конца строки $ соответствует даже завершающему \n в совпадающей строке, поэтому мы используем \Z вместо $

Например

^\w+$ будет соответствовать строке abcd\n, но ^\w+\Z не

Как насчет \A и когда использовать?

4b9b3361

Ответ 1

Чаще всего он используется, когда также разрешено многострочное совпадение. Поскольку \A соответствует только в начале текста ENTIRE, а не только в начале строки, в регулярных выражениях, которые могут соответствовать друг другу, функции ^ и \A отличаются.

Ответ 2

Как и любая функция регулярных выражений, вы используете ее, когда она более точно описывает то, что вам нужно, в отличие от какой-либо более общей функции. Если вы знаете, что хотите точно соответствовать началу строки (вместо логических строк), используйте функцию регулярного выражения, которая описывает это. Не используйте функции регулярных выражений, которые могут совпадать в ситуациях, которые вам не нужны.

Для Perl см. perlre docs для получения подробных сведений о утверждениях нулевой ширины:

\b  Match a word boundary
\B  Match except at a word boundary
\A  Match only at beginning of string
\Z  Match only at end of string, or before newline at the end
\z  Match only at end of string
\G  Match only at pos() (e.g. at the end-of-match position
    of prior m//g)

Ответ 3

Не имеет прямого отношения к вашему вопросу в соответствии с тегами, которые вы использовали, но есть хотя бы один язык (Ruby), где ^ и $ всегда означает начало/конец строки, поэтому, если вы хотите совместить start/end-of-string вы должны использовать \A и \Z или \Z.

Если вы хотите, чтобы ваши регулярные выражения были переносимыми, рекомендуется использовать явно то, что вы хотите, вместо того, чтобы полагаться на доступность модификаторов режима, таких как \m или Regex.MULTILINE и т.д.

С другой стороны, JavaScript, POSIX и XML не поддерживают \A и \Z. Вот где инструменты, такие как RegexBuddy, пригождаются, что переводят регулярные выражения из одного аромата в другой для вас.

Ответ 4

Если при использовании выражения regex вы поддерживаете поддержку \A, я рекомендую вам всегда использовать его вместо ^. \A всегда совпадает в начале строки только во всех вариантах, которые ее поддерживают. Нет проблем с разрывами строк.

^ может совпадать только в начале строки или в начале любой строки в зависимости от параметров регулярного выражения и регулярных выражений.

Используя \A, вы уменьшаете вероятность путаницы, когда кто-то еще должен поддерживать ваш код.