我需要一個正則表達式來獲取整個異常名稱。來自stacktrace的點和它之前的空白。正則表達式匹配完整異常名稱
Time: Sun Apr 10 20:36:57 CEST 2011
Message: java.lang.NullPointerException
at com.hello.World.Hi.initDB(bla.java:273)
我需要一個正則表達式來獲取整個異常名稱。來自stacktrace的點和它之前的空白。正則表達式匹配完整異常名稱
Time: Sun Apr 10 20:36:57 CEST 2011
Message: java.lang.NullPointerException
at com.hello.World.Hi.initDB(bla.java:273)
事情是這樣的:
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
UPDATE
好吧,如果你想匹配 「異常」 二字 - 有一種方法:
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));
}
'Message'是否總是作爲異常的前綴?如果是這樣,那麼這將搶例外成捕獲組你:
Message:(\s[a-zA-Z\.]*)
我不是從你的問題不確定是否需要之前要不要捕捉空間 - 如果你不這樣做,然後刪除來自此正則表達式的\s
。
如果你的異常遵循慣例(即:始終與例外後綴),那麼你可以簡單地這樣做:
([a-zA-Z\.]*Exception)
你使用哪種語言? – StKiller 2011-04-11 13:22:35
Hi..I使用groovy和Java – Natta 2011-04-11 13:24:27
StKiller,真的嗎? 「java.lang。*」 – halfdan 2011-04-11 13:24:49