Как регулярное выражение сопоставить с параметром времени выполнения? - PullRequest
1 голос
/ 16 августа 2011

Я получил строку, введенную пользователем, и я хочу вставить эту строку в регулярное выражение.Есть ли способ встроить значение параметра аналогично параметрам в запросах SQL?

Например, я мог бы сделать это:

string myRegex = "[abc]" + myParameter + "[xyz]";   

, но это не будет работать, потому что myParameter может содержать специальные символы регулярного выражения.

Внедрение SQL было исправлено с помощью параметров.Как мне сделать то же самое с регулярными выражениями?

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

1 Ответ

0 голосов
/ 16 августа 2011

Зависит от используемого механизма регулярных выражений.

В Java вы обычно делаете

"[abc]" + Pattern.quote(myParameter) + "[xyz]"

или (если myParameter не содержит \E), вы можетеделать

"[abc]\\Q" + myParameter + "\\E[xyz]"
...