Ответ 1
Используйте отрицательный lookbehind ((?<!...)
). Следующее регулярное выражение означает "/
, которому не предшествует открывающая скобка":
(?<!\[.*)/
С# demo: https://dotnetfiddle.net/85S3cK
Я хочу разбить следующий тип строки:
Родитель/Ребенок/Значение [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
Как я могу это сделать?
Используйте отрицательный lookbehind ((?<!...)
). Следующее регулярное выражение означает "/
, которому не предшествует открывающая скобка":
(?<!\[.*)/
С# demo: https://dotnetfiddle.net/85S3cK
Для этого вы можете использовать обычные строковые операции. Просто разделите строку на первом [
, а затем разделите ее соответствующим образом. Затем просто добавьте конечную часть строки в последний элемент:
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);