Я хотел бы разделить строку, используя пробел, как мой разделитель, но если есть несколько слов, заключенных в двойные или одинарные кавычки, то я бы хотел, чтобы они были возвращены как один элемент.Функция RegEx для синтаксического анализа командной строки без использования библиотеки
Например, если входная строка:
CALL "C:\My File Name With Space" /P1 P1Value /P1 P2Value
Результирующий массив будет:
Array[0]=Call
Array[1]=C:\My File Name With Space
Array[2]=/P1
Array[3]=P1Value
Array[4]=/P1
Array[5]=P2Value
Как использовать регулярные выражения, чтобы сделать это? Я понимаю, что есть синтаксические анализаторы командной строки. Я бегло взглянул на популярный, но не справился с ситуацией, когда у вас может быть несколько параметров с тем же именем. В любом случае вместо обучения использованию библиотеки синтаксического анализа командной строки (оставьте это на другой день). Мне интересно узнать больше о функциях RegEx.
Как бы вы использовали функцию RegEx для ее синтаксического анализа?
Не так ли, что вам заданы аргументы командной строки в виде массива строк в Main()? –
Нет, я разбираю пакетные файлы в папке. – ChadD
Я бы не использовал регулярное выражение для обработки этого. В командных строках слишком много особых случаев. Вам лучше использовать одну из рекомендаций из http://stackoverflow.com/questions/491595/best-way-to-parse-command-line-arguments-in-c?rq=1 или просто написать свой (что, возможно, займет пару часов). –