Java 消息的正则表达式

Java 消息的正则表达式,java,regex,Java,Regex,我试图在eclipse中编写一个能够识别字符串的正则表达式 X.printStackTrace(); 其中“X”将是异常变量。我的表述如下: ([^\*\/\/\s])(.*)\Q.printStackTrace();\E 这可以正常工作,但在第三行,当单行中有多个printStackTrace语句时除外 /* e.printStackTrace(); e.getMessage(); e.printStackTrace();e.printStackTrace(); e.print

我试图在eclipse中编写一个能够识别字符串的正则表达式

X.printStackTrace();
其中“X”将是异常变量。我的表述如下:

([^\*\/\/\s])(.*)\Q.printStackTrace();\E
这可以正常工作,但在第三行,当单行中有多个printStackTrace语句时除外

/* e.printStackTrace();
   e.getMessage();
   e.printStackTrace();e.printStackTrace(); e.printStackTrace();
   e.printStackTrace();*/
/* e.printStackTrace();
   e.getMessage();*/
/*
// e.printStackTrace();
   e.getMessage();
*/
如果我只需要搜索,谁能告诉我正则表达式应该是什么

X.printStackTrace();

在第三行?

您可能会看到:

((?:\w+.printStackTrace\(\);\s*)+?)
看看比赛

编辑:(我的正则表达式在Rubular的输出)

/*e.printStackTrace()

e、 getMessage()

e.printStackTrace();e、 printStackTrace();e、 printStackTrace()

e.printStackTrace()*/

/*e.printStackTrace()

e、 getMessage();//

//e.printStackTrace()

e、 getMessage(); */

编辑


为此,我们需要调整模式,使
greedy(+)
变成
ungreedy(+?)

问题在于
(.*)
部分:必须使用
(.*)
进行延迟匹配


不过我会使用以下正则表达式:
[^.\s]+\Q.printStackTrace()\E

在上面的示例中,您希望正则表达式匹配哪些行/令牌?如何尝试匹配?注意:在字符类中,星号和斜杠不需要转义,您只需编写
[^*/\s]
就行了。第三条语句与多条printstacktrace语句仍然存在问题。您查看了链接了吗?是的..仍然不起作用。我检查了红细胞部位的表达。嗨!我在rubular的输出是编辑答案中突出显示的部分。此匹配是否符合您的预期?在第二个匹配中,所有三个printStackTrace();一气呵成。我希望比赛分开进行。与第二行一样,Rubular应该有3个单独的突出显示。我还需要忽略块注释,所以我添加了([^\*/\s])。谢谢你的懒惰匹配部分。这解决了我的问题。