Eclipse有条件替换正则表达式

时间:2012-06-06 15:22:17

标签: regex eclipse replace

给出文字

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,每个参数一套。 如果您知道如何检索多个匹配项,那么也可以提供解决方案

1 个答案:

答案 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