0

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

4

2 回答 2

1

问题在于(.*):您必须使用(.*?).

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

于 2013-06-10T14:17:28.933 回答
0

你可能正在看这个:

((?:\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 (+?)

于 2013-06-06T10:01:15.070 回答