/ / Регулярний вираз Notepad ++ OK JDK 1.6 NOK - java, regex, java-6

Регулярний вираз Notepad ++ OK JDK 1.6 NOK - java, regex, java-6

Як частина мого стажування, я повинен використовувати регулярні вирази для аналізу файлу журналу. Це журнал 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);

Велике спасибі! Чи можете ви сказати мені, чому ми повинні його використовувати?