Нужно ли экранировать точку в классе символов (квадратные скобки) регулярного выражения?


97

Точка .в регулярном выражении соответствует любому одиночному символу. Чтобы регулярное выражение соответствовало точке, точка должна быть экранирована:\.

Мне было указано, что внутри квадратных скобок []не нужно экранировать точку. Например, выражение: [.]{3}соответствует ...строке.

Не правда ли? И если да, то верно ли это для всех стандартов регулярных выражений?


Да, это правда, что DOT (и большинство других специальных символов) не нужно экранировать в классе символов.
anubhava

3
Не существует "стандарта" синтаксиса регулярных выражений.
BoltClock

3
@BoltClock есть несколько: posix, posix extended, perl. См. En.wikipedia.org/wiki/Regular_expression#Standards
Дариуш

1
@Dariusz это ты проголосовал за меня, потому что думал, что я был неправ? если так, то я хочу вернуть свои 2 очка :)
Пол Самсота

@peeskillet Да, я был, я исправился. Спасибо и извините.
Dariusz

Ответы:


136

В символьной классе (квадратные скобки) любой символ , за исключением ^, -, ]или \является буквальным.

Этот веб-сайт является прекрасным справочником и содержит много информации о нюансах различных разновидностей регулярных выражений. http://www.regular-expressions.info/refcharclass.html


3
Это действительно зависит от того, как язык обрабатывает это, но для большинства языков это верно.
Patrick Oscity

40
-также буквально, если это последнее значение
Педро Лобито

16
И ^ является буквальным, если это не первый персонаж
Найджел Б. Пек

1
Если $ выглядит как переменная, ее также нужно экранировать. Например: [$.]
W3Coder

1
@PedroLobito И если это первое, я думаю
Тим Мэлоун
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.