Избегайте специальных символов регулярных выражений для tr1 :: regex

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

Это было бы что-то вроде

string pattern = "\\d+ " + myEscapeFunction(userData);

Какие специальные символы мне нужно убежать? Или есть эквивалентная функция Qt’s QRegExp :: побег?

1

Решение

Список символов, которые вы должны экранировать, зависит от того, какие грамматики регулярных выражений вы используете. Если вы используете по умолчанию ECMAScriptпохоже на список в QRegExp::escape Документация — хорошее место для начала. Это говорит:

Специальные символы: $, (,), *, +,.,?, [,,], ^, {, | а также }.

Этот список опущен \ по какой-то причине.

Но это немного сложнее, потому что внутри квадратных скобок, ни один из символов, кроме \ а также ] особенные, и \] должен остаться без помощи.

Далее, ? который приходит сразу после ( не особенный. Например, в (?=x) ? должен не быть сбежавшим

Я думаю, что это в значительной степени, но я не уделил достаточно времени этому, чтобы быть уверенным.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]