Почему открывающую фигурную скобку можно избежать, а закрывающую нет? - PullRequest
0 голосов
/ 15 января 2019

Здесь мы можем найти :

Поскольку мы хотим сделать больше, чем просто искать буквальные фрагменты текста, нам нужно зарезервировать определенные символы для специального использования. В разновидностях регулярных выражений, обсуждаемых в этом уроке, есть 12 символов со специальным значением: обратная косая черта \, символ ^, знак доллара $, точка или точка., Вертикальная черта или символ |, знак вопроса?, звездочка или звездочка *, знак плюс +, открывающая скобка (закрывающая скобка), открывающая квадратная скобка [и открывающая фигурная скобка {, эти специальные символы часто называются «метасимволами». Большинство из них являются ошибками, когда используются одни.

Почему открывающую фигурную скобку можно избежать, а закрытие нельзя? В конце концов, она имеет специфическое для регулярного выражения значение.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Чтобы быть более точным, он говорит:

открывающая скобка ( ... открывающая квадратная скобка [ и открывающая фигурная скобка { ... - ошибки при использовании по отдельности .

и это правильно, потому что, когда большинство движков сталкиваются с открывающей скобкой во время обхода регулярного выражения, это означает для них нечто большее, чем буквальный символ, поэтому они пытаются найти закрывающую пару, иначе это синтаксическая ошибка. До сих пор они не анализируют регулярное выражение с конца, чтобы выдать ошибку для непарной закрывающей скобки.

0 голосов
/ 15 января 2019

Потому что это не нужно. Везде, где закрывающая скобка имеет особое значение, буквальная закрывающая скобка не может возникнуть в любом случае:

foo{2,3} соответствует "fooo" и "foooo", тогда как foo\{2,3} соответствует "foo {2,3}".

Что бы foo{2,3\} значило бы? Внутри квантификатора, начинающегося с {, могут присутствовать только цифры и запятая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...