正则表达式为<fixed-string> <variable-string> <fixed-string>?

时间:2017-12-29 06:28:14

标签: .net regex

我在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("(.*)")] 

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

2 个答案:

答案 0 :(得分: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以外的任何字符中的一个或多个

[^&#34;&#34;] + =&#34;以外的任何字符中的一个或多个(双是逃避)

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

答案 1 :(得分:1)

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

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

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