2013-11-14 1 views
41

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

It has been pointed out to me, что в квадратных скобках [] точка не должны быть экранированы. Например, выражение: [.]{3} соответствует строке ....

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

+0

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

+2

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

+1

@BoltClock есть некоторые: posix, posix extended, perl. См. Http://en.wikipedia.org/wiki/Regular_expression#Standards – Dariusz

ответ

58

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

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

+2

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

+15

'-' также является литеральным, если это последнее значение –

+0

В повторных выражениях ICU и Java, как' ', так и' '' должны быть экранированы внутри класса символов (а '{' и '}' должны быть экранированы вне символа класс). –

Смежные вопросы