Шаблоны Regexp Java имеют двойные обратные косые черты, как сохранить шаблоны в читаемом формате

Было бы большим иметь удобный способ снабдить шаблоны единственной обратной косой чертой. Некоторые обходные решения: сохраните его в файле и используйте NIO для чтения. Недостатки: Java EE не предоставляет доступ IO. Хранилище так или иначе в JNDI. Возможно, в новинку для java 5 Pattern.LITERAL флаг может помочь? Я хочу работать с нормальной строкой образца, как \d, нет \\d.

5
задан Arjan Tijms 12 April 2013 в 20:31
поделиться

1 ответ

проблема в том, что \ - это специальный символ в java при создании String, независимо от регулярного выражения или нет.

например String s = "\ t";

вы не можете использовать это для произвольных символов, String s = "\ a"; выдаст вам ошибку времени компиляции. допустимыми символами являются b, t, n, f, r, ", 'и \

, поэтому, чтобы получить литерал \ в строке в java, вам нужно экранировать его следующим образом: \\ . Из-за этого ваша опция only НЕ должна содержать эти строки в файлах java, следовательно, во внешнем файле, который загружается вашим файлом java. Pattern.LITERAL совсем не поможет, потому что вам все еще нужна действительная строка java, а \ d - нет.

6
ответ дан 14 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: