Я работаю с кучей (~ 2000) файлов .csproj, и в этом коллективе разработчиков есть исторический прецедент для встроенной xcopy в событиях после сборки, чтобы изменить положение вещей во время процесса сборки. Чтобы собрать знания в одном месте, я работаю над устранением этих вызовов xcopy в пользу декларативных действий по сборке в нашем автоматизированном процессе сборки.
Имея это в виду, я пытаюсь найти регулярное выражение, которое я могу использовать, чтобы отобрать аргументы пути, предоставленные для xcopy. Заявления бывают нескольких вкусов:
xcopy /F /I /R /E /Y "..\..\..\Microsoft\Enterprise Library\3.1\bin"
xcopy /F /I /R /E /Y ..\Crm\*.* .\
xcopy ..\NUnit ..\..\..\output\debug /I /Y
в частности:
- непредсказуемое размещение выключателей
- аргумент пути назначения не всегда указывается
- аргументы пути, иногда заключенные в кавычки
Я не волшебник регулярных выражений, но это то, что у меня есть (чрезмерное использование парентезов для сохранения совпадений в powershell:
(.*x?copy.* '"?)([^ /'"]+)('"/.* '"?)([^ /'"]+)('"?.*)
разделы ([^ /'"]+)
- это часть, которую я намереваюсь использовать в качестве аргументов пути, определяясь как строки, не содержащие кавычек, пробелов или косой черты, но у меня есть ощущение, что мне придется применить два регулярных выражения (один для пути в кавычках с пробелами и один путь без кавычек)
К сожалению, когда я запускаю это регулярное выражение, мне кажется, что я получаю одинаковое совпадение для первого и второго аргументов пути. Больше всего расстраивает.
Как бы я изменил это, чтобы исправить это?