正则表达式匹配完整的例外名称

时间:2011-04-11 13:19:24

标签: java regex

我需要一个正则表达式来获取包含的整个异常名称。来自stacktrace的点,它是前面的空格。

Time: Sun Apr 10 20:36:57 CEST 2011
Message: java.lang.NullPointerException
   at com.hello.World.Hi.initDB(bla.java:273)

2 个答案:

答案 0 :(得分:1)

这样的事情:

String test = "Time: Sun Apr 10 20:36:57 CEST 2011\nMessage: java.lang.NullPointerException\n   at com.hello.World.Hi.initDB(bla.java:273)";
Pattern check = Pattern.compile(".*Message:(\\s[\\w\\.]*)");
Matcher checker = check.matcher(test);
while(checker.find())
{
    System.out.println(checker.group(1));
}

输出

 java.lang.NullPointerException

<强>更新

好的,如果你想与“Exception”一词匹配 - 有一种方法:

String test = "Time: Sun Apr 10 20:36:57 CEST 2011\nMessage: java.lang.NullPointerException\n   at com.hello.World.Hi.initDB(bla.java:273)";
Pattern check = Pattern.compile("(\\s[\\w\\.]*Exception)");
Matcher checker = check.matcher(test);
while(checker.find())
{
   System.out.println(checker.group(1));
}

答案 1 :(得分:0)

'Message'是否总是作为例外的前缀?如果是这样,那么这会将异常捕获到捕获组中:

Message:(\s[a-zA-Z\.]*)

我不确定你的问题是否需要先占用空间 - 如果不这样做,请从此正则表达式中删除\s

如果您的例外遵循惯例(即:始终以Exception为后缀),那么您可以简单地执行此操作:

([a-zA-Z\.]*Exception)