Сборник регулярных выражений в intellij - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь сделать:

uri=uri.replaceFirst("{}",param.toString());

Я должен использовать регулярное выражение вместо {}, но это не должно быть проблемой компиляции, потому что сигнатура метода принимает String, а {} - совершенно правильная строка. Ниже replaceFirst():

public String replaceFirst(String regex, String replacement) 

Помогите мне понять, как это ошибка компиляции.

IntellijIDEA 2018.1

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

{} - это специальный символ регулярного выражения, представляющий оператор диапазона, поэтому перед его использованием вы должны выйти из него

// normal use
    "".replaceFirst("a{1,2}","");

Как показано, {} распознается как диапазон, чтобы соответствовать минимальным и максимальным значениям a

, поэтому при использовании регулярного выражения вы должны указать какой-либо символ / слово вместе с минимальным и максимальным значением с помощью оператора диапазона {} (в противном случае это может привести к аварийному завершению работы механизма регулярного выражения или к непредсказуемому поведению, поэтому компилятор будет активен здесь)

решение: убежать, используя \\

uri = uri.replaceFirst("\\{\\}",param.toString());
0 голосов
/ 03 мая 2018

Это НЕ ошибка компиляции, которую вы получаете. Это проверка IntelliJ, хотя она подчеркнута красным.

enter image description here

Вы можете отключить проверку, зайдя в настройки

enter image description here

0 голосов
/ 03 мая 2018

Ожидается, что первый параметр будет действительным регулярным выражением. Поскольку есть метасимволы, вы должны убежать:

uri=uri.replaceFirst("\\{\\}",param.toString());

IntelliJ проводит проверку , что позволяет ему сообщать о таких ошибках. Это особенность IDE. Компиляция этого кода с javac не приведет к сбою.

Вы можете отключить проверку (alt + enter, подробности на странице, указанной выше):

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...