gpt4 book ai didi

c# - 正则表达式替换程序集版本的最后两位数字

转载 作者:行者123 更新时间:2023-11-30 21:44:38 26 4
gpt4 key购买 nike

我正在使用 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(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\*]+(\.))+ 之后模式。

关于c# - 正则表达式替换程序集版本的最后两位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40727839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com