【问题标题】:Regular expression to select different names选择不同名称的正则表达式
【发布时间】:2019-03-30 23:29:52
【问题描述】:

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

[程序集:AssemblyProduct("DllsName")] 更改为 [程序集:AssemblyProduct("s")]

[程序集:AssemblyVersion("1.0")] 改为[程序集:AssemblyVersion("1.xxx")]

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

【问题讨论】:

  • 您使用什么语言?到目前为止,如果您尝试了任何方法,您可以分享一下吗?

标签: regex


【解决方案1】:

\[assembly: AssemblyProduct\("[^"]*"\)\]\[assembly: AssemblyVersion\("1.0"\)\]

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

【讨论】:

    【解决方案2】:

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

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

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

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

    我建议搜索 [^"]+(每个非 " 字符)而不是 .*(所有字符),因为正则表达式是贪婪的,如果您想将该命令重用于其他应用程序,知道这一点总是好的。

    您可以在https://regex101.com/获得任何正则表达式的详细说明

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 2010-09-21
      • 2019-11-14
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多