我正在处理一堆(~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
具体来说:
- 不可预知的开关位置
- 并不总是提供目标路径参数
- 路径参数有时用引号括起来
我不是正则表达式向导,但这是我到目前为止所得到的(过度使用 parenteses 是为了在 powershell 中保存匹配:
(.*x?copy.* '"?)([^ /'"]+)('"/.* '"?)([^ /'"]+)('"?.*)
这些([^ /'"]+)
部分是我打算成为路径参数的部分,被定义为不包含引号、空格或正斜杠的字符串,但我觉得我必须应用两个正则表达式(一个用于带空格的引号包裹的路径一个用于无引号路径)
不幸的是,当我运行这个正则表达式时,它似乎为我提供了第一个和第二个路径参数的相同匹配。最令人沮丧。
我将如何改变它来纠正它?