Я борюсь с заменой строк, содержащих специальные символы регулярных выражений. Я получил список разделителей из файла, и мне нужно заменить экранированную форму этих символов на символы без экранирования.
Таблица сопоставления следующая. Обратите внимание, что escape-символ известен после разбора файла, поэтому я не могу жестко закодировать строки замены.
escapeChar + F + escapeChar <=> sep1
escapeChar + S + escapeChar <=> sep2
escapeChar + T + escapeChar <=> sep3
escapeChar + R + escapeChar <=> sep4
escapeChar + E + escapeChar <=> escapeChar
Допустим, что после разбора файла у вас есть следующие разделители
sep1 = |
sep2 = ^
sep3 = &
sep4 = $
sep5 = \
Таким образом, когда вы анализируете файл и вводите следующее \F\\S\\T\\R\\E\
. Следует перевести на |^&$\
Следующий код не работает (я только что попробовал с первым разделителем):
String sep1 = "|";
String escapeChar = "\\";
String x = "\\F\\\\S\\\\T\\\\R\\\\E\\";
x.replaceAll(Pattern.quote(escapeChar) + "F"
+ Pattern.quote(escapeChar), sep1);
System.out.println(x);