我需要一个正则表达式来匹配我的java代码中的方法调用,其中方法调用没有被任何java注释类型包围。
实际上,我的要求是找到在非注释代码中调用此方法的所有java文件。
例如,getMessage是方法调用,并提供以下代码作为输入.. RegEx应仅匹配第12行。
// Systme.out.println (obj1.getMessage()); //line 1
/* Systme.out.println (obj.getMessage());*/ //line 2
/* public void test() { //line 3
Systme.out.println (obj2.getMessage()); //line 4
} //line 5
*/ //line 6
/**public void test () { //line 7
* Systme.out.println (obj3.getMessage()); //line 8
*} //line 9
*/ //line 10
public void test() { //line 11
Systme.out.println (obj5.getMessage());//line 12
}
我首先尝试匹配否定的情况,即注释中的方法调用,然后尝试否定表达式。为此,我使用了.. (?=(//|/*|*)).*getMessage.*
,它仍然不会覆盖第4行的方法调用。
但即使在那之前......当我使用(?!(//|/*|*)).*getMessage.*
使用负面看时,它甚至开始匹配所有方法调用。然后,我明白我错过了原子分组的概念,并试图探索它但不能得到太多。
如果你能帮助我解决这个问题,我将不胜感激。提前谢谢,
PS:我只需要RegEx而不是java代码,因为我只需要提供表达式作为系统的输入。
答案 0 :(得分:0)
我会分两个阶段来做这件事
.\w+?(.*|methodName).*;