消息的正则表达式

时间:2013-06-06 09:40:00

标签: java regex

我正在尝试在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行?

2 个答案:

答案 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 (+?)