6

我们有一个包含超过 25 个项目的解决方案,每个项目都有自己的AssemblyInfo我正在尝试增加所有程序集编号,以便为我们的下一个版本增加一个主要版本。

我的正则表达式技能很少,但基本上我想找到:

<Assembly: AssemblyVersion("x.x.x.x")>

x正则表达式中将是\d/ 一个数字。看着这里,我想我可以使用:

{AssemblyVersion("[\d].[\d].[\d].[\d]")}

哪个不起作用,它不喜欢左括号。我的问题基本上分为两个阶段:

  1. 我将使用什么正则表达式字符串来查找示例?
  2. 是否可以使用正则表达式将第一个数字替换为数字 + 1?(我怀疑我有点乐观)如果是这样,在这种情况下正则表达式字符串会是什么?

这是在源代码管理中,所以我不想直接修改文件。

提前致谢。

4

2 回答 2

4

注意:这是使用 Visual Studio 正则表达式查找和替换。

我认为您不能在进行正则表达式替换时添加一个。但是,您可以替换为文字数字。例如,您可以使用将第一个数字替换为 的正则1表达式99

AssemblyVersion("1.0.2121.0")-->AssemblyVersion("99.0.2121.0")

这是我用于 Visual Studio 搜索和替换的正则表达式:

Search Regex:  AssemblyVersion[(]["]([0-9]+)([.][0-9]+[.][0-9]+[.][0-9]+)["][)]
Replace Regex: AssemblyVersion("99${2}")

(.")搜索正则表达式通过将它们包裹在方括号中来转义所有特殊字符。然后它使用括号将版本号分成两组。第一组是第一组数字。第二组是最后三组数字。

例如,AssemblyVersion("1.0.2121.0")像这样分组(使用大括号进行分组): AssemblyVersion("{1}{.0.2121.0}"). 所以第 1 组是1,第 2 组是.0.2121.0

替换正则表达式AssemblyVersion("99${2}")使用搜索正则表达式中的文字和组 2 来构建替换字符串。该${2}方法使用第 2 组中的文本。字符串的其余部分是文字。

于 2013-03-14T16:31:32.547 回答
0

如果您打算使用 C# 来查找您的文本,那么我认为这是您需要的正则表达式 - 我已经将它包装在一个逐字字符串中并转义了双引号。

Regex regex = new Regex(@"<Assembly: AssemblyVersion\(""\d+\.\d+\.\d+\.\d+""\)>");

如果要选择元素以将字符串操作为新字符串,请添加一些括号,如下所示:

Regex regex = new Regex(@"<Assembly: AssemblyVersion\(""(\d+)\.(\d+)\.(\d+)\.(\d+)""\)>");

然后,您可以单独访问这些数字以使用正则表达式组创建一个新字符串:

Match match = regex.Match(your_search_text);
if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
    Console.WriteLine(match.Groups[2].Value);
    Console.WriteLine(match.Groups[3].Value);
    Console.WriteLine(match.Groups[4].Value);
}
于 2013-03-14T16:26:03.153 回答