在Java文件中搜索和替换

时间:2016-06-28 00:59:30

标签: java regex

我需要在应用程序中更改日志记录设计。目前我的应用程序使用实用程序类来处理所有错误,信息和调试语句。我需要改变它。例如,我需要更改

的所有出现次数
Log.send("XXX", Log.DEBUG); 

logger.debug("XXX"); 

Log.send("XXX", Log.INFO); 

logger.info("XXX");  or

我可以使用任何工具或在Notepad ++或textpad等编辑器中使用正则表达式吗?

3 个答案:

答案 0 :(得分:1)

使用正则表达式搜索并查找(我使用原子风格):

发现:Log.send\((\"\w+\"), Log.DEBUG\);

REPLACE:logger.debug($1)

发现:Log.send\((\"\w+\"), Log.INFO\);

REPLACE:logger.info($1)

答案 1 :(得分:0)

在Notepad ++中,您可以像这样使用正则表达式

<强> logger.debug

查找:

Log\.send\("([^"]+)", Log\.DEBUG\);

替换:

logger\.debug\("\1"\);

<强> logger.info

查找:

Log\.send\("([^"]+)", Log\.INFO\);

替换:

logger\.info\("\1"\);

我在eclipse中对此进行了测试,但它确实有效。对于Netbeans,只需将\1替换为$1即可。如果你想 lazy 并且只为这两个使用一个正则表达式查找和替换匹配,那么你可以使用它:

查找

Log\.send\("([^"]+)", Log\.([^\)]+)\);

替换

logger\.\L\2\E\("\1"\);

不同之处在于我也捕获了DEBUGINFO,然后将它们用作logger的方法名称。但是,关键字是大写的,所以我先将它们设置为小写(因此,\L\Ecut off the lower case

答案 2 :(得分:0)

如果你可以访问cygwin(windows)或shell(os x或linux)上的vi,或者甚至其他linux命令都应该让这个变得非常简单。这是另一种方式。此外,您不必打开每个文件,如果您这样做,它应该是shell上的一个命令,用于整个项目源代码。

示例:下面的代码查找当前目录中所有文件的测试搜索字符串(递归),并将其替换为&#39; replacetext&#39;

grep -r -l 'test' . | sort | uniq | xargs perl -e "s/test/replacetext/" -pi