我需要一个正则表达式来获取包含的整个异常名称。来自stacktrace的点,它是前面的空格。
Time: Sun Apr 10 20:36:57 CEST 2011
Message: java.lang.NullPointerException
at com.hello.World.Hi.initDB(bla.java:273)
答案 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)