使用正则表达式选择其他名称

时间:2018-10-26 08:37:36

标签: regex

我的问题是,在大型应用程序上,我必须更改每个dll中的所有程序集文件,并且有一百多个。我想使用文本编辑器中的“查找并替换”来更改这两行:

  

[assembly:AssemblyProduct(“ DllsName”)]更改为[assembly:AssemblyProduct(“ s”)]

     

[assembly:AssemblyVersion(“ 1.0”)]更改为[assembly:AssemblyVersion(“ 1.xxx”)]

其中xxx是一个固定数字,而DllsName在每个文件中都不相同。 我是正则表达式中的白腰带,但我认为这是最好的方法:使用正则表达式选择要更改的部分,然后替换它。不幸的是,对于所有这些["(个字符,我不太确定如何编写此表达式,也不知道如何更改该DllsName,因为它是每个文件都不一样。 所以我的问题是:是否可以使用正则表达式更改所有文件?如何更改?

2 个答案:

答案 0 :(得分:1)

batchID-00002\[assembly: AssemblyProduct\("[^"]*"\)\]

如何将正则表达式替换应用于多个文件:What's the best tool to find and replace regular expressions over multiple files?

答案 1 :(得分:1)

使用Notepad ++,您可以通过按Ctrl + H然后在底部选中“正则表达式”来搜索/替换正则表达式。

用“ s”替换每个DLL名称: 查找:(AssemblyProduct\(")[^"]+("\)) 替换为:\1s\2

要将所有DLL版本替换为“ 1.777”, 查找:(AssemblyVersion\(")1.0("\)) 替换为:\11.777\2

您转义(的原因是因为没有转义,它只会尝试创建一个要记住的字符组(如果可以,可以在\ 1或\ 2的替换字符串中重用该字符组。第一个或第二个捕获组)。 "不是与([相反的正则表达式命令,因此无需使用\对其进行转义。

我建议搜索[^“] +(每个非”字符)而不是。*(所有字符),因为正则表达式很贪婪,并且很高兴知道您是否要将命令重用于其他应用程序。

您可以在https://regex101.com/

上获取任何正则表达式的详细内容。