这是我的xyz.csproj文件中的一行:
<Reference Include="SomeDLLNameHere, Version=10.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
我需要做的就是将'Version = 10.2.6.0'替换为'Version = 11.0.0.0'。
我需要执行此操作的程序是VSBuild,它使用VBScript,所以我相信。
问题是我无法对“旧”版本号进行硬编码。因此,我需要更换以下内容:
<Reference Include="SomeDLLNameHere, Version=10.2.6.0,
因此我需要一个符合上述要求的正则表达式,在引用的例子中,10.2.6.0可以是任何东西。
我相信一个正则表达式会选择包含和之间的文本
'<Reference Include="SomeDLLNameHere' and '>' is what I need.
还有其他类似请求的引用,但似乎没有一个对我来说是最重要的工作。
我通常会使用C#来做这类事情而且VBScript / Regex就像瘟疫一样是我避免的。
答案 0 :(得分:1)
对于大多数正则表达式,您可以使用:
<Reference Include="SomeDLLNameHere.*?/>
对于visual studio,我不确定*?
是否可行...试试这个:
\<Reference Include="SomeDLLNameHere[^/]*\/\>
答案 1 :(得分:0)
此正则表达式模式应该可以正常工作
"(<Reference[^>]+Version=)([^,]+),"
应用VBScript
str1 = "<Reference Include=""SomeDLLNameHere, Version=10.2.6.0,"
' Create regular expression.
Set regEx = New RegExp
regEx.Pattern = "(<Reference[^>]+Version=)([^,]+),"
' Make replacement.
ReplaceText = regEx.Replace(str1, "$111.0.0.0,")
WScript.echo ReplaceText
给出正确的结果
<Reference Include="SomeDLLNameHere, Version=11.0.0.0,
<强>更新强>
如果您需要匹配Version=
与标记末尾匹配的内容,请使用>
代替,
"(<Reference[^>]+Version=)([^>]+)>"
答案 2 :(得分:0)
将Regex与C#或VBScript一起使用几乎是一样的,因为它都是为了开发正则表达式。这样的事可以帮助:
<Reference\s+Include\s*=\s*\".+\",\s*Version\s*=\s*.+,
不确定csproj文件中有关区分大小写和空格的规则,但这涵盖了您之前描述的格式。请注意,“+”运算符表示一个或kleen。