Regex, извлечение списка данных из журнала - PullRequest
0 голосов
/ 19 сентября 2019

с таким журналом:

API code n.º 1111111111, registered transaction
NAT Code: 8500/1500
6 value
User code: 51000
Start Time 18-09-2019 22:45:59 CET [18-09-2019 16:45:59 ET]
End Time 18-09-2019 23:00:47 CET [18-09-2019 17:00:47 ET]
  1: cod_user1 (online), 19.236 (99%)
  2: cod_user2 (online), 5.244 (88%)
  3: cod_user3 (online),
  4: cod_user4 (online),
  5: cod_user5 (offline),
  6: cod_user6 (offline),

Queue 542. End transaction.

API code n.º 2222222222, registered transaction
NAT Code: 8500/1500
6 value
User code: 51000
Start Time 18-09-2019 22:45:59 CET [18-09-2019 16:45:59 ET]
End Time 18-09-2019 23:00:47 CET [18-09-2019 17:00:47 ET]
  1: cod_user1 (online), 19.236 (99%)
  2: cod_user2 (online), 5.244 (88%)
  3: cod_user3 (online),
  4: cod_user4 (online),
  5: cod_user5 (offline),
  6: cod_user6 (offline),

Queue 542. End transaction.

API code n.º 3333333333, registered transaction
NAT Code: 8500/1500
6 value
User code: 51000
Start Time 18-09-2019 22:45:59 CET [18-09-2019 16:45:59 ET]
End Time 18-09-2019 23:00:47 CET [18-09-2019 17:00:47 ET]
  1: cod_user1 (online), 19.236 (99%)
  2: cod_user2 (online), 5.244 (88%)
  3: cod_user3 (online),
  4: cod_user4 (online),
  5: cod_user5 (offline),
  6: cod_user6 (offline),

Queue 542. End transaction.

Есть N итераций, и мне нужно извлечь данные в режиме списка (разделенных вкладками), что-то вроде:

apicode     nat code    value   Start date          End date            Queue
1111111111  8500/1500   6 value 18-09-2019 22:45:59 18-09-2019 23:00:47 542
2222222222  8500/1500   6 value 18-09-2019 22:45:59 18-09-2019 23:00:47 542
and so on ....

ИМне также нужно извлекать полный список пользователей, статус и данные для каждой итерации кода API, как показано ниже (разделенные табуляцией):

apicode     user        status  data    eff
1111111111  cod_user1   online  19.236  99
1111111111  cod_user2   online  5.244   88
1111111111  cod_user3   online          
1111111111  cod_user4   online          
1111111111  cod_user5   offline         
1111111111  cod_user6   offline         
2222222222  cod_user1   online  19.236  99
2222222222  cod_user2   online  5.244   88
2222222222  cod_user3   online          
2222222222  cod_user4   online          
2222222222  cod_user5   offline         
2222222222  cod_user6   offline         
3333333333  cod_user1   online  19.236  99
3333333333  cod_user2   online  5.244   88
3333333333  cod_user3   online          
3333333333  cod_user4   online          
3333333333  cod_user5   offline         
3333333333  cod_user6   offline         

Возможно с регулярным выражением?

Что у меня есть.

https://regex101.com/r/1bpioM/1

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

\1\t\2\t\3\t\4\t\5\t\6\t\10

1111111111  8500/1500   6   51000   18-09-2019 22:45:59 18-09-2019 23:00:47 542

2222222222  8500/1500   6   51000   18-09-2019 22:45:59 18-09-2019 23:00:47 542

3333333333  8500/1500   6   51000   18-09-2019 22:45:59 18-09-2019 23:00:47 542

Чего я не достиг, так это списка пользователей, поскольку сценарий находит только первого пользователя каждого элемента в журнале

Не могли бы вы помочь мне пересмотреть это?

Спасибо

1 Ответ

0 голосов
/ 19 сентября 2019

Предполагая, что текст такой, что вы можете выделить интересные части с помощью

(?<=API\scode\sn\.º\s)\d{10}|(?<=NAT\sCode:\s)\d{4}\/\d{4}|\d\svalue|(?<=User\scode:\s)\d{5}|(?<=(Start|End)\sTime\s)\d{2}-\d{2}-\d{4}\s\d{2}:\d{2}:\d{2}\sCET|(?<=Queue\s)\d{3}

Он выбирает каждую часть, за которой следуют определенные строки.«Части» отформатированы так же, как те, что в вашем файле, как и «конкретные строки».См. Лучшее объяснение здесь .

Проверьте, работает ли ваш движок, потому что он использует конструкции (положительный взгляд сзади), которые не всегда совместимы

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