Регулярное выражение для соответствия полному имени исключения - PullRequest
2 голосов
/ 11 апреля 2011

Мне нужно регулярное выражение, чтобы получить полное имя исключения, включаяточки из стека и это пробел перед ним.

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

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Примерно так:

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

Хорошо, если вы хотите сопоставить со словом «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));
}
0 голосов
/ 11 апреля 2011

Всегда ли «Сообщение» ставит префикс исключения?Если это так, то это вызовет исключение в группу захвата для вас:

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

Я не уверен из вашего вопроса, нужно ли вам захватывать пространство раньше или нет - если вы этого не сделаетезатем удалите \s из этого регулярного выражения.

Если ваши исключения следуют соглашению (то есть: всегда имеют суффикс «Исключение»), вы можете просто сделать это:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...