2011-10-31 2 views
4

Следующие выражения не совпадают: /[.]*/ и /.*/. Почему это и как они отличаются друг от друга? Каково взаимодействие между [] и специальными символами в регулярных выражениях?Различия между `[.]` Vs `.` в regex

спасибо.

+3

Кстати, «правильный» способ избежать специальных символов - это обратная косая черта, поэтому '/[.]*/' будет '/\.*/'. –

ответ

12

Точка . обычно является подстановочным значком, соответствующим любому символу. Однако в классе символов ([]) он рассматривается как литерал и соответствует только точке.

+4

character class == '[]' – epascarello

+4

Точнее, '.' обычно соответствует любому символу, кроме символов новой строки. –

8
  • .* буквально означает «соответствует нулю или более любого символов», в котором . выступает в качестве шаблона.
  • [.]* буквально означает «совпадение нуля или более точек . символов», где ., заключенный в класс символов [], сопоставляется буквально.
Смежные вопросы