我正在尝试在eclipse中编写一个识别字符串
的正则表达式X.printStackTrace();
其中'X'将是异常变量。我的表达如下:
([^\*\/\/\s])(.*)\Q.printStackTrace();\E
当单行中有多个printStackTrace语句时,除第3行外,这种方式正常。
/* e.printStackTrace();
e.getMessage();
e.printStackTrace();e.printStackTrace(); e.printStackTrace();
e.printStackTrace();*/
/* e.printStackTrace();
e.getMessage();*/
/*
// e.printStackTrace();
e.getMessage();
*/
如果我只需要搜索
,任何人都可以让我知道正则表达式应该是什么X.printStackTrace();
在第3行?
答案 0 :(得分:1)
问题出在(.*)
部分:您必须使用(.*?)
进行懒惰匹配。
我会使用以下正则表达式:[^.\s]+\Q.printStackTrace();\E
答案 1 :(得分:0)
你可能会看到这个:
((?:\w+.printStackTrace\(\);\s*)+?)
查看匹配项here。
编辑 :(我在Rubular的正则表达式输出)
/ * e.printStackTrace();
e.getMessage();
<强> e.printStackTrace(); e.printStackTrace(); e.printStackTrace(); 强>
<强> e.printStackTrace(); * 强> /
/ <强> * e.printStackTrace(); 强>
e.getMessage(); / /
// <强> e.printStackTrace(); 强>
e.getMessage(); * /
修改强>
为此我们需要调整模式以使greedy (+)
变为ungreedy (+?)
。