我正在寻找正则表达式,它允许我使用搜索替换为使用Notepad ++的文件中的所有java方法添加2行代码
之前:
public void startProcessing() { .............. .............. }
后:
public void startProcessing(){
logger.info( "Entering into startProcessing" ); .............. .............. logger.info( "Exiting startProcessing" ); }
这是可能的,如果是的话,任何人都可以帮助我使用代码......或者以任何其他可能的方式指导我这样做。
答案 0 :(得分:2)
要从“坏消息”开始,您将无法插入“退出”行,除非您有更好的指纹来匹配。使用您当前的代码示例,您可以匹配的最佳值是}
,并且,作为一个疯狂的猜测,您的代码中可能有很多结束 - 大括号。
要插入“Starting”行是可行的,但健壮性取决于您的输入。
如果您总是想要替换示例代码中的相同行(或相同格式但功能名称不同),您可以在Find + Replace菜单中执行以下操作:
查找
public void startProcessing() {
替换:
public void startProcessing() {\n\tlogger.info("Entering into startProcessing");
搜索模式:Extended
如果您想动态使用非硬编码的函数名进行替换,可以尝试以下操作:
查找
(public void )([a-zA-Z0-9_$]+)(.*)
替换:
\1\2\3\n\tlogger.info\("Entering into \2"\);
搜索模式:Regular Expression
这种“动态”方法将需要您以相同格式声明的任何方法public void functionName...
。我使用[a-zA-Z0-9_$]
作为函数名称的字符集,但您可以根据需要进行调整。
更新(忽略获取/设置方法)
要忽略get / set方法,例如getFieldValueUnits()
或setFieldValueUnits(int val)
,您可以使用以下Find
值(Replace
与上面相同):
(public void )(?!get|set)([a-zA-Z0-9_$]+)(.*)
这将匹配所有不以get
或set
开头的函数(并声明为public void
,如上所述)。