我有一个包含 400-500 个文件的庞大代码库。在大多数文件中,我们都有这样的行:<cfcatch type="any"> / <cfcatch type="database"> / <cfcatch>
等等。因此常见的模式是<cfcatch
。
无论哪里有<cfcatch
,我都需要在该行后面添加这一行新行,即<cfinclude template="test.cfm">
。
因此<cfcatch type="any">
现在是:
<cfcatch type="any"> <cfinclude template="test.cfm">
我尝试使用多个正则表达式替换,但没有成功。
答案1
这可以通过 3 个步骤实现:
步骤1:
使用在文件中查找确定一个不包含在任何文件中的字符串,即在所有 500 个文件中总共出现 0 次。假设您发现它是字符串***###***
。(我避免使用字母以避免区分大小写,使解决方案更简单。)
第2步:
使用在文件中查找:
寻找:
(^\<cfcatch.*$)
用。。。来代替:
\1***###***
搜索模式:
正则表达式
“.匹配换行符”选项:未选中
在所有文件中搜索并替换。
步骤3:
使用在文件中查找:
寻找:
***###***
用。。。来代替:
\r\n<cfinclude template="test.cfm">
搜索模式:扩展
在所有文件中搜索并替换。
完毕 :)
答案2
基于以下假设:
<cfcatch></cfcatch>
您在一行中没有标签(<cfinclude...
仍然会插入到下面!)- 你没有
<cfcatch/>
(<cfinclude...
仍将插入下面!) - 你不关心插入的缩进
<cfinclude...
...解决方案是:
- 寻找:
(<cfcatch.*)$(\s)
- 用。。。来代替:
\1\2<cfinclude template="test.cfm">
如果这些假设不正确,请在评论中告诉我,我会纠正我的解决方案以满足这些要求。