Из документации :
Если в выражении Regex.Split
используются захватывающие скобки, любой полученный текст включается в результирующий массив строк. Например, разделение строки «сливовая груша» на дефис, помещенный в скобки для ввода, добавляет строковый элемент, содержащий дефис к возвращаемому массиву.
У вас есть два набора захватывающих скобок, один с кавычками и один с исключительными. Они возвращают строки, которые вы видите.
Обратите внимание, что шаблон для RegEx.Split
не должен соответствовать желаемым результатам, он должен соответствовать разделителям. Строка в кавычках обычно не является разделителем.
Кроме того, ваши результаты кажутся очень странными, потому что вы использовали жадный матч. Видимо, требование «входная строка разбивается столько раз, сколько возможно». делает сопоставление нежадным для всей операции.
В целом, я бы сказал, что вы используете не тот инструмент. Регулярные выражения, в зависимости от реализации, не способны работать с вложенными группировками или крайне неэффективны. Простой DFA должен работать намного лучше и никогда не требует больше, чем одно сканирование.