在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 ?(我怀疑我有点乐观)如果是这样,在这种情况下正则字符串会是什么?
这是在源代码管理中,所以我不想直接修改文件。
注意:这是使用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);
}