Regex 用正则表达式替换版权日期

Regex 用正则表达式替换版权日期,regex,Regex,我正在尝试编写一个正则表达式,我可以在搜索和替换对话框中使用它来更新大量AssemblyInfo.cs文件中的版权日期 版权要么有一系列日期,要么只有一个日期。日期周围的关联文本也各不相同 [assembly: AssemblyCopyright("Copyright © 2008 - 2010 My Company.")] [assembly: AssemblyCopyright("Copyright © 2008 My Company.")] [assembly: AssemblyCop

我正在尝试编写一个正则表达式,我可以在搜索和替换对话框中使用它来更新大量AssemblyInfo.cs文件中的版权日期

版权要么有一系列日期,要么只有一个日期。日期周围的关联文本也各不相同

[assembly: AssemblyCopyright("Copyright ©  2008 - 2010 My Company.")]
[assembly: AssemblyCopyright("Copyright ©  2008 My Company.")]
[assembly: AssemblyCopyright("Copyright ©  2005 -   2010 My Company.")]
[assembly: AssemblyCopyright("Copyright ©  1999")]
到目前为止,我的正则表达式是

Find: (\D*\d\d\d\d) *-*\d*(\D*)
Replace: $1 - 2011$2
从我的结果可以看出,第二行在2011年和我的公司之间缺少一个空格

[assembly: AssemblyCopyright("Copyright ©  2008 - 2011 My Company.")]
[assembly: AssemblyCopyright("Copyright ©  2008 - 2011My Company.")]
[assembly: AssemblyCopyright("Copyright ©  2008 - 2011 My Company.")]
[assembly: AssemblyCopyright("Copyright ©  2008 - 2011")]
我做错了什么?我认为这与懒惰/贪婪的表达有关

这应该可以做到:

Find: (.*?\d{4})(\s*-\s*\d{4})?(.*)
Replace: $1 - 2011$3

你可以在网上试试。

很有魅力。唯一需要注意的是,任何拥有2011年版权的东西,都会变成2011-2011年版权。我不确定是否可以用正则表达式解决这个问题,所以我只是在事后做一个双过程来解决这些问题。