Если вам нужно использовать split
, вы можете использовать регулярное выражение
\|(?=$|[^]]+\||\[[^]]+\]\|)
https://regex101.com/r/7OxmiY/1
Это будет соответствовать трубе, а затем смотреть либо:
$
, конец строки, так что окончательный |
делится на, или
[^]]+\|
, отличные от ]
символов, пока не будет достигнута труба, гарантируя, что трубы внутри []
s не будут разбиты, или
\[[^]]+\]\|
- То же, что и выше, за исключением буквальных [
и ]
с, окружающих шаблон
В Java:
String input = "|random|[abc|www.abc.org]|[test]|1024|";
String[] output = input.split("\\|(?=$|[^]]+\\|)");