Java 用于嵌套函数调用的正则表达式

Java Regex for Nesting Function Calls

我有大约 200 个函数调用

markers.add(packageDecl.getPosition(), "package.invalid", this.fullName);

需要替换为

markers.add(I18n.createMarker(packageDecl.getPosition(), "package.invalid", this.fullName));
            ^^^^^^^^^^^^^^^^^^                                                            ^

它们可以有任意数量的函数参数,并且参数可以是嵌套调用,如示例中所示。但是,假设 ; 后面总是有换行符。


我已经尝试过这个正则表达式:

markers\.add\((.*)$

这允许我删除 markers.add( 部分并添加 I18n.createMarker(。但是,我不能在末尾添加额外的右括号:); -> ));.

你能不能用这个:

Regex:   markers\.add\((.*)\)"
Replace: markers.add(I18n.createMarker())

这个丑陋的东西 似乎适用于 Eclipse 正则表达式查找:

markers\.add\((.|\n)*;$