Сплит с помощью кронштейна - PullRequest
13 голосов
/ 15 ноября 2011

Как я могу разделить строку, используя [ в качестве разделителя?

String line = "blah, blah [ tweet, tweet";

, если я сделаю

line.split("[");

Я получаю ошибку

Исключение в потоке "main" java.util.regex.PatternSyntaxException: Незакрытый символьный класс рядом с индексом 1 [

Любая помощь?

Ответы [ 5 ]

35 голосов
/ 15 ноября 2011

[ - это зарезервированный символ в регулярном выражении, вам нужно его избежать,

line.split("\\[");
4 голосов
/ 15 ноября 2011

Метод split работает с использованием регулярных выражений.Символ [ имеет в них особое значение;он используется для обозначения классов символов от [ до ].Если вы хотите использовать открывающую квадратную скобку буквально, используйте \\[, чтобы убрать ее как специальный символ.Есть две косые черты, потому что обратная косая черта также используется в качестве escape-символа в литералах Java String.Это может привести к путанице при вводе регулярных выражений в коде Java.

4 голосов
/ 15 ноября 2011

Просто избегайте его:

line.split("\\[");

[ - это специальный метасимвол в регулярном выражении, который необходимо экранировать, если он не находится внутри класса символов, как в вашем случае.

2 голосов
/ 15 ноября 2011

Символ [ интерпретируется как специальный символ регулярного выражения, поэтому его необходимо экранировать:

line.split("\\[");

2 голосов
/ 15 ноября 2011

Пожалуйста, используйте "\\[" вместо "[".

...