Регулярное выражение, чтобы не разбивать, если оно внутри определенного шаблона - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть пользовательская строка, которая является потоковой версией нескольких элементов.Элемент может быть целым числом, строкой и списком строк, где каждый элемент представлен I, S, L соответственно.

For eg: String d = "I:123;S:345;L:{S:45;S:67;S:789};I:23";

Я пытаюсь написать одно регулярное выражение, которое может разбить этострока и должно выдавать 4 элемента

1. I:123,  2. S:345, 3.L:{s:45;s:67;s:789}; ,4:I:23

Если я просто разделю на основе, то это будет разделять элементы. Список того, что не должно происходить. Затем я попытался написать какое-то сложное регулярное выражение, но ничего не получилось.

Может кто-нибудь дать указатель?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы можете использовать это регулярное выражение для разделения:

String[] arr = str.split(";(?![^{}]*})");

Демонстрация RegEx

Детали:

  • ;: совпадение литерала ;
  • (?![^{}]*}): отрицательный прогноз, чтобы убедиться, что у нас нет } после не { и } символов
0 голосов
/ 28 ноября 2018

Вы должны использовать ленивые квантификаторы:

(.+?);(.+?);(.*)

Ссылки:

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