Мне необходимо встроить пользовательский ввод в мое регулярное выражение, поэтому его необходимо экранировать для любых специальных символов регулярных выражений, и я заранее не знаю, какой будет строка.
Это было бы что-то вроде
string pattern = "\\d+ " + myEscapeFunction(userData);
Какие специальные символы мне нужно убежать? Или есть эквивалентная функция Qt’s QRegExp :: побег?
Список символов, которые вы должны экранировать, зависит от того, какие грамматики регулярных выражений вы используете. Если вы используете по умолчанию ECMAScript
похоже на список в QRegExp::escape
Документация — хорошее место для начала. Это говорит:
Специальные символы: $, (,), *, +,.,?, [,,], ^, {, | а также }.
Этот список опущен \
по какой-то причине.
Но это немного сложнее, потому что внутри квадратных скобок, ни один из символов, кроме \
а также ]
особенные, и \]
должен остаться без помощи.
Далее, ?
который приходит сразу после (
не особенный. Например, в (?=x)
?
должен не быть сбежавшим
Я думаю, что это в значительной степени, но я не уделил достаточно времени этому, чтобы быть уверенным.
Других решений пока нет …