Regex Eclipse条件替换为正则表达式
给定文本Regex Eclipse条件替换为正则表达式,regex,eclipse,replace,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 +
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
”
有没有办法强制只在Log.i行上执行替换
编辑:我尝试了下面的正则表达式 “
Log\.i\(.*?\(\s*(\w++\s+(\w+)([,\)])+
”但是$1、$2、$3只包含最后一个匹配项(最后一个参数:doIt)
$1=布尔doIt)
$2=doIt
$3=) 当应该有3组$1、$2、$3时,每个参数一个。 如果您知道如何检索多个匹配项,这也将成为解决方案 我使用这个小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-pi
如果有人还想贡献一些,我知道我可以运行perl作为Eclipse外部工具来处理java文件。我该怎么做
更新:
我写了一篇关于如何使用外部perl从EclipseIDE中运行脚本的文章只匹配以
Log.i
开头的行。我想你是说Java,Eclipse IDE与你的问题没有多大关系。@MattBall你可以注意到我展示的正则表达式有3个匹配项,而不是一个匹配项。如果我将Log.I作为正则表达式的一部分,则只有第一个或最后一个参数匹配:如果你有一个解决方案,请发布它,我会尝试它。@ Junuxx实际上是指Eclipse编辑器,它的搜索端替换功能是任何文本文件::是的,在我的例子中是java代码,但与问题无关,它可以是C++,C++等。我以为你的程序处理的字符串看起来像代码。
perl -pi <scriptname> <file>