У меня есть строка в Java.Вот часть того, что меня интересует {3: {108:TR2011052300088}}
Позже я делю сплит на {3: {108:
.По какой-то причине (я гуглил) {
и }
- специальный символ, поэтому его необходимо экранировать \}
и \{
(ясно, что это не работает -> ошибка времени компиляции).
Другие упоминают, что это ошибка в регулярном выражении Java.Я действительно не уверен.Исключение, которое я получаю:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed counted closure near index 2 {3:{108: at java.util.regex.Pattern.error(Unknown Source)
Короче говоря, мой код разбивает строку, используя {3: {108:
в качестве разделителя, и вылетает на ней:
String query="{3: {108:";
String [] messageParts = message.split(query);
Мне известны другие способы сделать это, хотя и более сложные, например, написать собственный синтаксический анализатор и т. Д.
Как я могу разбить строку, чтобы она не вылетала?
РЕДАКТИРОВАТЬ: Чтобы ответить на некоторые комментарии:
- Двойная косая черта не помогает: \\{
дать \{3:\{108:MAMABEARid123}}
, так как 2 косые черты становятся 1
-Экранирование с 1 косой чертой не скомпилируется: неверная последовательность Escape