正则表达式 ?

问题描述 投票:-1回答:2

我在Visual Studio中有一个.NET解决方案,包含很多项目,每个项目都包含一个带有各种版权文本的AssemblyInfo.cs,例如:

[assembly: AssemblyCopyright("Copyright © Microsoft 2005")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyCopyright("Copyright © MyCompany 2014")]

我希望使用正则表达式的力量来找到所有匹配的字符串

[assembly: AssemblyCopyright("<<variable>>")]

并替换它

[assembly: AssemblyCopyright("Copyright © MyCompany 2017")]

什么是匹配<fixed-string><variable-length-string><fixed-string>的正则表达式?

我试过了

[assembly: AssemblyCopyright("(.*)")] 

但它似乎匹配文件中的每个字符。

.net regex
2个回答
1
投票

https://regexr.com/3ije4

var input = @"
[assembly: AssemblyCopyright(""Copyright © Microsoft 2005"")]
[assembly: AssemblyCopyright(""Copyright © 2016"")]
[assembly: AssemblyCopyright(""Copyright © MyCompany 2014"")]
";


var reg = new Regex(@"\[assembly: AssemblyCopyright\(""[^""]+""\)\]");
var result = reg.Replace(input, "[assembly: AssemblyCopyright(\"Copyright © MyCompany 2017\")]");

说明:

[^ X] =除X之外的任何字符

[^ X] + =除X之外的任何字符中的一个或多个

[^“”] + =除了“(双用于逃脱)之外的任何字符中的一个或多个

这更具体,但。+或。*也有效。


1
投票

感谢Barmar,我意识到这有效:

\[assembly: AssemblyCopyright\("(.*)"\)\]

转义固定字符串中的特殊正则表达式字符并使用(。*)测试变量字符串非常有效。

© www.soinside.com 2019 - 2024. All rights reserved.