Regex для разбиения массива на токене - PullRequest
1 голос
/ 28 октября 2019

У меня есть строка вроде следующего:

String s = 100[leetcode].

Можно ли разделить его на массив строк, используя метод split()?

String[] arr = s.split("\\s*]+\\s*");

Таким образом, получающийся массив становится:

["100"] ["["] ["leetcode"] ["]"].

Я не могу определить правильное регулярное выражение, необходимое для этого. Кто-нибудь может помочь с этим?

1 Ответ

1 голос
/ 28 октября 2019

Одним из вариантов может быть использование обходных путей

(?<=\S)(?=[\[\]])|(?<=[\[\]])(?=\S)
  • (?<=\S) Положительный взгляд сзади, если слева - символ без пробелов
  • (?=[\[\]]) Положительный взгляд вперед, если то, что находится справа, является либо [, либо ]
  • |, либо
  • (?<=[\[\]]) Положительный взгляд сзади, f то, что слева, является либо [, либо]
  • (?=\S) Позитивный взгляд, если справа - символ без пробелов

Regex demo | Демонстрация Java

Например, в Java

String s = "100[leetcode]";
String[] arr = s.split("(?<=\\S)(?=[\\[\\]])|(?<=[\\[\\]])(?=\\S)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...