【问题标题】:regex to replace last two digits of an assemblyversion正则表达式替换程序集版本的最后两位数
【发布时间】:2016-11-22 05:05:27
【问题描述】:

我正在使用 teamcity 和一个 C# 项目,我想使用文件内容修补程序来替换程序集版本中的最后两位数字(例如:[assembly: AssemblyVersion("1.0.*.*")] 中的两个星号)。我在文件内容修补程序上找到了文档,如果您只想更改最后一个数字,它建议使用 (^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")(([0-9\*]+\.)+)[0-9\*]+(\"\s*\)\s*\]),这让我走到了那里。

我想如果我这样做 (^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")(([0-9\*]+(\.))+)[0-9\*]+(\"\s*\)\s*\]) 它将捕获最后一个周期作为它自己的组,让我可以毫无问题地替换两颗星。但是,看起来第一颗星仍然在 1.0 组中被捕获(因此组变为 1.0.*.)。

我想要的是限制第一组捕获 {major}.{minor}。然后有最后一个时期是它自己的小组,所以我可以做类似的事情:$1$5\%build.number%$7%build.vcs.number%$8 这会给我AssemblyVersion("1.0.{build#}.{vcs#}")]

一般来说,我可以在没有太多问题的情况下偶然发现正则表达式,但过去几个小时我一直在努力解决这个问题,但我似乎无法让它正确。他将不胜感激任何有关得出此结论的信息。

【问题讨论】:

  • 尝试 (^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?\s*AssemblyVersion(Attribute)?\s*\(\s*@?\")([0-9\*]+\.[0-9\*]+)\.([0-9\*]+\.[0-9\*]+)(\"\s*\)\s*\]) 并替换为 $1$5.%build.number%.%build.vcs.number%$7
  • regex demo
  • @WiktorStribiżew 谢谢!这很好用。我很感激答案!如果您将此作为实际答案,我会接受。
  • 我已经添加了答案。

标签: c# regex teamcity


【解决方案1】:

如果你想在验证的同时保留你发现替换的解决方案,你可以使用

(^\s*\[\s*assembly\s*:\s*((System\s*\.)?\s*Reflection\s*\.)?‌​\s*AssemblyVersion(A‌​ttribute)?\s*\(\s*@?‌​\")([0-9\*]+\.[0-9\*‌​]+)\.([0-9\*]+\.[0-9‌​\*]+)(\"\s*\)\s*\])

并替换为$1$5.%build.number%.%build.vcs.number%$7

regex demo

我刚刚将([0-9\*]+(\.))+ 展开为([0-9\*]+\.[0-9\*‌​]+)\.([0-9\*]+\.[0-9‌​\*]+),2 组(([0-9\*]+\.[0-9\*‌​]+)) 用文字点(\.) 分隔。我还必须删除遵循([0-9\*]+(\.))+ 模式的[0-9\*]+

【讨论】:

    【解决方案2】:

    我会先提取1.0.*.*,然后使用Version.Parse

    更小的正则表达式(并且可以缩短更多)..

    string input = @"[assembly:AssemblyVersion(""1.2.3.4"")]";
    var verStr = Regex.Match(input, @"\[.+?\(\""(.+?)\""\)\]").Groups[1].Value;
    var version = Version.Parse(verStr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多