Было бы большим иметь удобный способ снабдить шаблоны единственной обратной косой чертой. Некоторые обходные решения: сохраните его в файле и используйте NIO для чтения. Недостатки: Java EE не предоставляет доступ IO. Хранилище так или иначе в JNDI. Возможно, в новинку для java 5 Pattern.LITERAL
флаг может помочь? Я хочу работать с нормальной строкой образца, как \d
, нет \\d
.
проблема в том, что \
- это специальный символ в java при создании String, независимо от регулярного выражения или нет.
например String s = "\ t";
вы не можете использовать это для произвольных символов, String s = "\ a";
выдаст вам ошибку времени компиляции. допустимыми символами являются b, t, n, f, r, ", 'и \
, поэтому, чтобы получить литерал \
в строке в java, вам нужно экранировать его следующим образом: \\
. Из-за этого ваша опция only НЕ должна содержать эти строки в файлах java, следовательно, во внешнем файле, который загружается вашим файлом java. Pattern.LITERAL
совсем не поможет, потому что вам все еще нужна действительная строка java, а \ d
- нет.