我在Visual Studio中有一个包含很多项目的.NET解决方案,每个项目都包含AssemblyInfo.cs
个版权文本,如:
[assembly: AssemblyCopyright("Copyright © Microsoft 2005")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyCopyright("Copyright © MyCompany 2014")]
我希望使用Regex的强大功能来查找匹配的所有字符串
[assembly: AssemblyCopyright("<<variable>>")]
并将其替换为
[assembly: AssemblyCopyright("Copyright © MyCompany 2017")]
匹配<fixed-string><variable-length-string><fixed-string>
的正则表达式是什么?
我试过
[assembly: AssemblyCopyright("(.*)")]
但它似乎匹配文件中的每个字符。
答案 0 :(得分:1)
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以外的任何字符中的一个或多个
[^&#34;&#34;] + =&#34;以外的任何字符中的一个或多个(双是逃避)
这是更具体的,但。+或。*也有效。
答案 1 :(得分:1)
感谢Barmar,我意识到这有效:
\[assembly: AssemblyCopyright\("(.*)"\)\]
使用(。*)转义固定字符串中的特殊正则表达式字符并使用(。*)测试变量字符串非常有效。