Java 消息的正则表达式
我试图在eclipse中编写一个能够识别字符串的正则表达式Java 消息的正则表达式,java,regex,Java,Regex,我试图在eclipse中编写一个能够识别字符串的正则表达式 X.printStackTrace(); 其中“X”将是异常变量。我的表述如下: ([^\*\/\/\s])(.*)\Q.printStackTrace();\E 这可以正常工作,但在第三行,当单行中有多个printStackTrace语句时除外 /* e.printStackTrace(); e.getMessage(); e.printStackTrace();e.printStackTrace(); e.print
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])。谢谢你的懒惰匹配部分。这解决了我的问题。