私は大量の (~2000) .csproj ファイルを扱っています。この開発スタッフには、ビルド プロセス中に物事を移動するために、ビルド後のイベントに xcopy を埋め込む歴史的な前例があります。ビルドの知識を 1 か所にまとめるために、自動ビルド プロセスでの宣言型ビルド アクションを優先して、これらの 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.* '"?)([^ /'"]+)('"/.* '"?)([^ /'"]+)('"?.*)
([^ /'"]+)
セクションは、引用符、スペース、またはスラッシュを含まない文字列として定義されている、パス引数にするつもりの部分ですが、2 つの正規表現を適用する必要があると感じています (1 つはスペースで引用符で囲まれたパス用) 。および引用符なしのパス用の 1 つ)
残念ながら、この正規表現を実行すると、最初と 2 番目のパス引数の両方に同じ一致が得られるようです。最もイライラします。
これを修正するにはどうすればよいですか?