Существует ли нотация регулярного выражения (PCRE), которая явным образом приведет к сбою синтаксического анализа выражения? - PullRequest
0 голосов
/ 25 апреля 2019

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

Мое текущее решение состоит в том, чтобы использовать непревзойденную скобку с некоторой информацией об ошибке, например "(Undefined-Macro" . Я бы предпочел что-то явное, но был бы признателен за любые другие предложения, которые с меньшей вероятностью сломаются, если регулярное выражение, в которое вводятся компоненты, уже содержит пропущенные скобки.

1 Ответ

1 голос
/ 25 апреля 2019

Это действительно трудно быть уверенным, что любая данная строка будет синтаксической ошибкой, потому что многое зависит от того, что было раньше. Ваша несоответствующая скобка является адекватным видом взлома, но если вы хотите альтернативу, попробуйте что-то вроде «\ p: сообщение об ошибке». Для обозначения «\ p» требуется один символ или открытая скобка, поэтому двоеточие вызывает синтаксическую ошибку - , если , то, конечно, он интерпретируется как шаблон «\ p» в любом контексте, в котором он находится.

...