Як частина мого стажування, я повинен використовувати регулярні вирази для аналізу файлу журналу. Це журнал Java і у мене є проблема з виявленням винятків.
Насправді, мої регулярні вирази працюють на Notepad ++, але не на Java (1.6), matcher.find () приймає дуже, ..., дуже довгий час, і знайти 0 зрештою.
Це мій регулярний вираз:
(.*bERRORb.*)r?n((tat|.*[Ee]xception|t...|r?n|ORA-).*r?n)+(^(?!.*ERROR).+)r?n
Ти знаєш чому ?
Дякую.
Відповіді:
1 для відповіді № 1Задня коса риса є одночасно символом уникнення для програмування Javaмовою і для регулярних виразів. Тому, коли у java (і на багатьох інших мовах програмування) є зворотні риси для регулярних виразів, ви повинні дублювати зворотну косу риску.
Наприклад, напишіть \s
замість s
як вимагає синтаксис регулярного виразу.
1 для відповіді № 2
Я можу рекомендувати вас http://www.regexplanet.com/advanced/java/index.html для тестування регулярного виразу, а потім мати відповідний рядок, щоб побудувати об'єкт регулярного виразу java
0 для відповіді № 3
Проблема полягає у використанні ^
характер, не забудьте оголосити Pattern
об'єкт з багаторядковий прапор.
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Велике спасибі! Чи можете ви сказати мені, чому ми повинні його використовувати?