Группировка того, что уже сгруппировано в регулярных выражениях - PullRequest
0 голосов
/ 25 февраля 2020

Regex -

(\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\dZ)\s+(INFO|WARN|DEBUG|ERROR|FATAL|TRACE)\s+(.*?\s+.*?)(.*?)\-\s+(.*?)\s+(?:(\[?.*?\])?)(.*)

Журналы -

2019-11-14T04:25:00.123Z  WARN http-nio-127.0.0.1-7440-exec-127 CorfuCompileProxy - accessInner: Encountered a trim exception while accessing version 120383907 on attempt 0
2019-11-14T04:23:08.700Z  INFO RpcManagerRequestCleanupTimer RpcManager - SYSTEM [nsx@6876 comp="nsx-manager" level="INFO" subcomp="manager"] Rpc response not received for application FabricStats request com.vmware.nsx.management.agg.messaging.AggService$ClientDataRequestMsg from client 8ac94189-d611-4eb3-9b93-c3c3a8e3d36a with correlation id 287e690e-0a47-4459-a0bb-be36fe439068 in 432000000 msec.
2019-11-14T04:24:04.072Z  INFO MessagingObjectFactoryImpl-4-2 ExporterLastAckServiceImpl - - [nsx@6876 comp="nsx-manager" level="INFO" subcomp="manager"] Found exporter with elaId = Node#a3844284-e626-11e9-a87b-005056bcc0c6#AggSvc-L2-Bridging, returning lastAck = 16507 
2019-11-14T04:23:08.362Z  INFO ActivityEventRecovery-1 ActivityCacheManager - - [nsx@6876 comp="nsx-manager" level="INFO" subcomp="manager"] Handling activity 92d6a146-fa12-4889-a0ff-441087e047d0 completion event for 1 
2019-11-14T04:23:08.362Z  DEBUG ActivityEventRecovery-1 ActivityCacheManager - - [nsx@6876 comp="nsx-manager" level="INFO" subcomp="manager"] Handling activity 92d6a146-fa12-4889-a0ff-441087e047d0 completion event for 1

В приведенных выше журналах мне нужно создать группу 8, в которую будут включены идентификаторы группы 7. Идентификаторы: .*-.*-.*-.*-.*

ссылка - https://regex101.com/r/LJnVrS/98

1 Ответ

0 голосов
/ 25 февраля 2020

Помогает ли это?

(\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\dZ)\s+(INFO|WARN|DEBUG|ERROR|FATAL|TRACE)\s+(.*?\s+.*?)(.*?)\-\s+(.*?)\s+(?:(\[?.*?\])?)(.*?\s+(?<id1>[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+)?\s+(\w+\s+)*(?<id2>[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+)?(\s+\w*)*)

Я внес следующие изменения:

  1. Для шаблонов идентификаторов вместо .*-.*-.*-.*-.* я использовал [a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+.
  2. Шаблоны идентификаторов именуются группами - id1 и id2. Итак, вам нужно будет получить их по этим именам, а не по номерам групп. Это помогает в том, что, даже если где-либо есть изменения в регулярном выражении, ссылка на вашу группу не должна изменяться. Эти группы будут иметь идентификаторы, если они присутствуют в строке журнала.
  3. Я использовал \w+ вместо .*, где это применимо.

Журнальные строки 1 и 3 не найти ничего (даже раньше). Я не пытался решить эту проблему.

Примечание: Если вы используете Ruby 2+ или Perl, шаблон идентификатора может быть повторно использован в качестве подпрограммы вместо повторения полностью , Это повысит читабельность.

...