Попытка получить некоторые полезные данные из файла журнала с помощью регулярного выражения в Java - PullRequest
0 голосов
/ 14 июля 2011

У меня проблемы с регулярным выражением, потому что я могу соответствовать только некоторым из моих целей.

У меня есть файл журнала, и я должен сопоставить некоторые элементы и написать другой текстовый файл. Я написал Java-код для краткого примера своего кода, но когда я помещаю весь файл, все портится.

*052511 074217 0065            02242806000      UNKNOWN         U G

*052511 074217 0065    4874    02242806000      UNKNOWN         U A

*052511 074218 0065    4874    02242806000      UNKNOWN         U R

--------   05/25/11   07:42:17   LINE = 0065   STN = 4874    

   CALLING NUMBER   02242806000

   NAME             UNKNOWN        

   UNKNOWN

   BC = SPEECH

00:00:00   INCOMING CALL    RINGING 0:02

00:00:11   CALL RELEASED

Я должен найти эти результаты из файла:

Incomming, 05/25 / 11,07: 42: 17,0065,4874,02242806000,00: 00: 09,2

В этом выражении 00:00:09 означает [00:00:11-00:00:00]-0:02

Для каждого входящего и исходящего звонка я должен вести разговор выше.

1 Ответ

0 голосов
/ 14 июля 2011

Вы можете использовать регулярные выражения, такие как:

(?xm:
^-------- \s+ (\S+) \s+ (\S+) \s+ LINE\s*=\s*(\d+) \s+ STN\s*=\s*(\d+)
\s+ CALLING\ NUMBER \s+ (\d+) \s*
(?:^(?:[ \t]+.*)?[\n\r]+)* # eat unwanted part

^(\d\d:\d\d:\d\d) \s+ INCOMING\ CALL \s+ RINGING\ ([\d:]+) \s*
(?:^\d.*[\r\n]+)* # possible stuff
^(\d\d:\d\d:\d\d) \s+ CALL\ RELEASED
)

Используйте значения групп захвата для получения результатов. Возможно, вам придется удалить /x связанные вещи, такие как комментарии и пробелы.

Пример Perl на http://ideone.com/qTBFe

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