【发布时间】:2014-10-15 01:15:58
【问题描述】:
我正在尝试为正则表达式后面的负面外观创建一个模式,以不匹配我的 java 文件中的某些代码行。
我可以将这个短语与这个“(?<=//).*getMessage.*”匹配
上面的表达式匹配下面代码中的第 1 行,
// Systme.out.println (obj1.getMessage()); //line1
/* Systme.out.println (obj.getMessage());*/ //line2
/* public void test() { //line3
Systme.out.println (obj2.getMessage()); //line4
} //line5
*/
public void test() {
Systme.out.println (obj5.getMessage()); //line 6
}
但是,当我尝试使用“(?<!//).*getMessage.*”来否定它时,它仍然匹配所有 #1、#2 和 #4 行。
实际上我的要求是匹配第 6 行的 getMessage 调用,并忽略在 cmets 中调用 getMessage 的其他地方。
如果有人能帮助我找到正确的表达方式,那就太好了。
PS:我无法访问 java 文件...我只需将 RegEx 传递给表单并选中所有 java 文件复选框。
【问题讨论】:
-
您可能需要使用两个表达式,尤其是查找跨多行的 cmets,即在
/*和*/之间。请注意,将正则表达式应用于非常规域(例如几乎所有语言)将始终只是一个近似值。