我正在尝试查找某些方法的所有事件,但只能使用指定数量的参数(5):
所以让我说我有不同的方法,使用相同的名称和不同的args集。
.method(asd,asd,asd,asd,asd,asd,asd)
.method(asd,asd,asd,asd,asd)
.method(asd,asd,asd)
我尝试过这样的事情:\.open\((?:.*?\,){4}[^,]*?\)
但它会给所有方法带来5个或更多的args:
.method(asd,asd,asd,asd,asd,asd,asd)
.method(asd,asd,asd,asd,asd)
我只需要那些有4位的人。提前致谢!
答案 0 :(得分:2)
适合我:
egrep "\(([^,]*,){4}[^,]*\)" method
评论建议:
egrep "open\s?\(([^,)]*,){4}[^,)]*\)" methodfile
答案 1 :(得分:0)
尝试这样的事情:
\.method\(\w+(,\w+){3}\)
只返回恰好有4个参数的那些。您可能想要考虑可选的空格:
\.method\s*\(\s*\w+(\s*,\s*\w+\s*){3}\)
由于您使用Eclipse标记了您的问题,我假设您熟悉Java。以下内容:
import java.util.regex.*;
class Test {
public static void main(String[] args) {
String text = ".method(asd,asd,asd,asd,asd,asd,asd) \n" +
".method(asd,asd,asd,asd) \n" +
".method(asd,asd,asd) \n" +
"Foo.method(a,b,c,d) \n";
Matcher m = Pattern.compile("\\.method\\(\\w+(,\\w+){3}\\)").matcher(text);
while(m.find()) {
System.out.println(m.group());
}
}
}
产生输出:
.method(asd,asd,asd,asd)
.method(a,b,c,d)
您可以在Ideone上看到:http://ideone.com/RvTxw
HTH