Java и Regex оба имеют специальные управляющие последовательности, и оба из них начинаются с \
.
Ваша проблема заключается в написании строкового литерала на Java. Управляющие последовательности Java разрешаются во время компиляции задолго до того, как строка передается в ваш механизм Regex для синтаксического анализа.
Последовательность "\+"
вызовет ошибку, так как это не допустимая строка Java.
Если вы хотите передать \+
в свой механизм Regex, вы должны явно сообщить Java, что хотите передать символ обратной косой черты, используя "\\+"
.
Все действительные управляющие последовательности Java следующим образом:
\t Insert a tab in the text at this point.
\b Insert a backspace in the text at this point.
\n Insert a newline in the text at this point.
\r Insert a carriage return in the text at this point.
\f Insert a formfeed in the text at this point.
\' Insert a single quote character in the text at this point.
\" Insert a double quote character in the text at this point.
\\ Insert a backslash character in the text at this point.
@kocko спасибо большое .... ** но почему я должен \\ + символ ** почему не \? –
потому что '+' является специальным символом регулярного выражения, а 'split' принимает regex –
@JordiCastilla, но поскольку я знаю, что split принимает String. Есть ли какой-либо специальный тип строки для split? IDE уведомляет меня об этих ошибках. Я не компилировал это. –