在visual studio中查找并使用regex替换汇编

本文关键字:regex 替换 汇编 visual studio 查找 | 更新日期: 2023-09-27 18:03:50

我们有一个超过25个项目的解决方案,每个项目都有自己的AssemblyInfo。我正试图增加所有的汇编号,为我们的下一个版本增加一个主要版本。

我的正则表达式技能是最小的,但本质上我想找到:

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

其中x用正则表达式表示为'd/一个数字。看这里,我想我可以使用:

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

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

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

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

在visual studio中查找并使用regex替换汇编

注意:这是使用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中的文本。字符串的其余部分为文字

如果你打算使用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);
}