Разделение на '/' до '[' появляется

Я хочу разбить следующий тип строки:

Родитель/Ребенок/Значение [4za] AX/BY

и получить из него String[] с помощью:

String[] ArrayVar = Regex.Split(stringVar, "?");

который разбивает строку на каждый / перед первым появлением [.

В результате я получаю

Array[0] => "Parent"
Array[1] => "Child"
Array[2] => "Value [4za] AX/BY"
Строки

также могут иметь другие форматы, такие как

Родитель/Значение [4za] AX/BY

Значение [4za] AX/BY

Как я могу это сделать?

Ответы

Ответ 1

Используйте отрицательный lookbehind ((?<!...)). Следующее регулярное выражение означает "/, которому не предшествует открывающая скобка":

(?<!\[.*)/

Демо

С# demo: https://dotnetfiddle.net/85S3cK

Ответ 2

Для этого вы можете использовать обычные строковые операции. Просто разделите строку на первом [, а затем разделите ее соответствующим образом. Затем просто добавьте конечную часть строки в последний элемент:

string inputstring = "Parent/Child/Value [4za] AX/BY";

int index = inputstring.IndexOf('[');

string[] parts = inputstring.Substring(0, index).Split('/');
parts[parts.Length - 1] += inputstring.Substring(index);