Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Регулярное выражение, экранирование


Автор: SuperFly 20.5.2008, 18:39
Привет всем.

Подскажите пожалуйста как мне можно экранировать спецсимволы регулярного выражения? Pattern.quote(str) не подходит под задачу.
Задача: для компиляции рег выражения подается строка с какими-то своими спецсимволами, типа @d @s, в общем, как в printf()
Надо заменить все @d на (\d+) @s на (\w+) и т.п. И при этом всём остальные спецсимволы должны быть заэкранированы.
Хоть ручками не делай 
Код

for (char c : "^$[]()+*.?".toCharArray())
    pattern = pattern.replace(c + "", "\\" + c);


Хоть это просто, но всё-таки лень потом этот код во все дыры сувать.

Автор: LSD 21.5.2008, 16:15
Цитата(SuperFly @  20.5.2008,  19:39 Найти цитируемый пост)
Хоть это просто, но всё-таки лень потом этот код во все дыры сувать.

Вынеси этот код в метод. Тем более что стандартный Pattern.quote() тебе не подойдет в любом случае.

P.S. Ты среди символов - забыл.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)