Итак, я хотел разбить регуляркой такую сроку:
aaaaa bbb "ccc ссс"
На такой массив:
[0] = aaaaa 
[1] = bbb 
[2] = ccc ссс
Когда-то давно я уже задавал такой вопрос, на что мне ответили таким вот паттерном:
[^\s"']+|"([^"]*)"|'([^']*)'
И все бы хорошо, но теперь мне понадобилось сохранять в цитатах кавычки и апострофы, т.е. результат уже должен быть таким:
[0] = aaaaa 
[1] = bbb 
[2] = "ccc ссс"
Пробовал кавычки вносить в скобки, но это не работает.

Принятый ответ

Попробуйте такую строку
new Regex(@"[^\s""']+|""([^""]*)""|'([^']*)'")
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
23
6 лет назад
0
тогда делай правило если пробел то разделить а если ковычка то запрешаем пробел
0
8
6 лет назад
Отредактирован uranus
0
pro100master, в регулярках я почти полный ноль, можно пример? Мне проще подобное сделать без регулярок, но все же хотелось бы на них, вместо того, чтобы городить свой костыль.
0
29
6 лет назад
0
Весь код в студию.
0
20
6 лет назад
Отредактирован Nerevar
0
Твой паттерн находит все как надо - и одинарные и двойны кавычки и пробелы между словами внутри кавычек
0
8
6 лет назад
0
Nerevar, я, наверно, не так выразился. Находит то он правильно, но мне нужно, чтобы в группу кавычки/апострофы попадали тоже, т.е. не:
"hello" world => [hello] [world]
А так:
"hello" world => ["hello"] [world]
0
20
6 лет назад
0
    class Program
    {
        static void Main()
        {
            Console.OutputEncoding = Encoding.UTF8;
            string s = "aaa bbb 'ccc' \"ddd\"";
            Regex regex = new Regex(@"[^\s""']+|""([^""]*)""|'([^']*)'");
            MatchCollection matches = regex.Matches(s);
            if (matches.Count > 0)
            {
                foreach (Match match in matches)
                    Console.WriteLine(match.Value);
            }
            else
            {
                Console.WriteLine("Совпадений не найдено");
            }

            Console.Read();
        }
    }
Проверьте что выводит этот пример у вас? Используется ваш регекс
0
8
6 лет назад
0
Загруженные файлы
3
20
6 лет назад
Отредактирован Nerevar
3
Попробуйте такую строку
new Regex(@"[^\s""']+|""([^""]*)""|'([^']*)'")
Загруженные файлы
Принятый ответ
0
8
6 лет назад
0
Nerevar, огромное спасибо, все работает!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.