【问题标题】:Regex to match Version number not starting with x.y正则表达式匹配不以 x.y 开头的版本号
【发布时间】:2012-08-21 00:06:43
【问题描述】:

我试图在 AssemblyInfo.cs 文件中查找不以我正在构建的 Major.Minor 数字开头的版本号。我已经尝试了各种版本,但它并没有达到我想要的效果 - 任何人都可以帮助我的 RegEx 吗?

        <MSBuild.ExtensionPack.FileSystem.File Condition="'$(BuildNumber)' != ''"
                                           TaskAction="Replace"
                                           RegexPattern="Version\(\&quot;(?:![$(VersionMajor).$(VersionMinor)])\d\.\d\.\d\.\d)\&quot;\)"
                                           Replacement="Version(&quot;$(VersionMajor).$(VersionMinor).0.0&quot;)"
                                           Files="$(AssemblyInfoFiles)" />

请注意,我在扩展包中使用 AssemblyInfo 类,但以上是针对初始设置的。

编辑 这是我在@Omega 的帮助下使用的工作版本。请注意,我使用的是已有的 VersionMajorMinor 属性。

        <!-- Update all the assembly info files with generated version info -->
    <MSBuild.ExtensionPack.FileSystem.File TaskAction="Replace"
                                           RegexPattern="Version\(\&quot;(?!$(VersionMajorMinor)\.)\d+\.\d+\.\d+\.\d+\&quot;\)"
                                           Replacement="Version(&quot;$(VersionMajorMinor).0.0&quot;)"
                                           Files="@(AssemblyInfoFiles)" />

【问题讨论】:

    标签: regex msbuild regex-negation


    【解决方案1】:

    试试Version\(\&amp;quot;(?!$(VersionMajor)\.$(VersionMinor)\.)\d+\.\d+\.\d+\.\d+\&amp;quot;\)

    【讨论】:

    • 谢谢欧米茄 我不得不稍微改变一下 Version(\"(?!$(VersionMajor)\.$(VersionMinor))\d+\.\d+\.\d+\.\d+\ ")
    • @Mark - 为什么要删除 VersionMinor 后面的 \.?想象一下您的 VersionMajor 是 1 而 VersionMinor 是 2,没有这样的 \. 它也将匹配字符串 Version(&amp;quot;1.20.3.4&amp;quot;)
    • 你说得对,不知道我是怎么删除的——谢谢你的发现
    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多