Разделенная строка регулярного выражения на несколько разделителей с кавычками

У меня есть следующая строка (двойные кавычки являются частью строки):

"abc def ghi" "%1" "%2"

Таким образом, строка начинается с двойной кавычки, каждый сегмент разделяется " ", и строка снова заканчивается двойной кавычкой. Я хотел бы разделить это на:

abc def ghi
%1
%2

Я попробовал следующее: "(^\")|(\" \")|(\"$)" но это не дало желаемого результата.


person Ronald Wildenberg    schedule 23.03.2012    source источник


Ответы (3)


Не усложняй. Просто используйте разделение строки:

        string test = "\"abc def ghi\" \"%1\" \"%2\"";
        var splits = test.Split(new string[]{"\" \"","\""},StringSplitOptions.RemoveEmptyEntries);
        foreach (var split in splits)
        {
            Console.WriteLine(split);
        }

(также удаляет лишние/пустые записи)

person manojlds    schedule 23.03.2012
comment
Лучше, чем мой ответ, понравилось. - person daryal; 23.03.2012
comment
Именно такой результат я и хочу :) Спасибо. - person Ronald Wildenberg; 23.03.2012

Regex regex = new Regex("\"(.*?)\"");

Полученные результаты:

http://rubular.com/r/lXbDIpkRRQ

person ionden    schedule 23.03.2012
comment
Это ваш ответ с использованием Regex. Хороший :]. - person MoonKnight; 23.03.2012
comment
Это работает, но результатом является массив из 7 строк: ["", "abc def ghi", " ", "%1", " ", "%2", ""]. Я хотел бы получить результат с 3 строками. - person Ronald Wildenberg; 23.03.2012

person    schedule
comment
Нравится, потому что это очень простое решение. Однако мне нужен результат, содержащий только 3 строки, а не 7... - person Ronald Wildenberg; 23.03.2012
comment
@RonaldWildenberg - Посмотрите на мой вариант раскола. - person manojlds; 23.03.2012