给出文字
public void MyFunction(int i, String str, boolean doIt) {
Log.i(TAG, "Enter MyFunction(int i, String str, boolean doIt)");
我想在第二行进行一些替换,但不是第一行
public void MyFunction(int i, String str, boolean doIt) {
Log.i(TAG, "Enter MyFunction( i:" + i + ", str:" + str ", doIt:" + doIt + ")");
到目前为止,使用以下正则表达式我设法得到这些结果:
找到“\w+\s+(\w+)([,\)])
”
替换为“$1:" + $1 + "$2
”
public void MyFunction(i:" + i + ", str:" + str ", doIt:" + doIt + ") ") {
Log.i(TAG, "Enter MyFunction( i:" + i + ", str:" + str ", doIt:" + doIt + ") ");
有没有办法强制只在 Log.i 行上执行替换?
修改
我尝试了以下正则表达式
“Log\.i\(.*?\((\s*(\w+\s+(\w+)([,\)]))+
”
但是$ 1,$ 2,$ 3只包含最后一个匹配(最后一个参数:doIt)
$ 1 =布尔doIt)
$ 2 = doIt方法
$ 3 =)
当应该有3套$ 1,$ 2,$ 3,每个参数一套。 如果您知道如何检索多个匹配项,那么也可以提供解决方案
答案 0 :(得分:0)
我塌了,
我用这个小perl来完成这项工作:
next unless /Log\.i/;
s/TAG,/TAGG/;
s/(final\s+)?[^ \(]+\s+(\w+)([,\)])/$2:\" \+ $2 \+ \"$3/g;
s/TAGG/TAG,/;
使用命令行:
perl -pi <scriptname> <file>
如果有人还想贡献一些,我知道我可以运行perl作为Eclipse外部工具来处理java文件。我该怎么做?
<强>更新强>
我写了一篇关于如何使用外部perl从Eclipse IDE中运行脚本的帖子 see the post