0

我有一个包含数千种不同事件和消息类型的日志来运行查询以查找和替换某些特定数据,例如这里是一个示例事件 1

 "eventID": "Ar39084",
      "data2": "http://sfa.stanly.local:8787/nices-uri/msa/PRAS-             TAM80/root/BLA_Notification::LINKDOWN-ISA_NA-Ar39084~2F538
      "data3": "[excm][132.19][78.65][68493435][Ar39084]"
      "data4": "AGV.SDA.Ar39084"

事件 2

  "eventID": "Ar39079",
  "data2": "http://sfa.stanly.local:8787/nices-uri/msa/PRAS-TAM80/root/BLA_Notification::LINKDOWN-ISA_NA-Ar39079~2F538
  "data3": "[excm][132.19][78.65][68493435][Ar39079]"
  "data4": "AGV.SDA.Ar39079"

所以我想要的是在我的记事本++搜索中搜索适用于第 1 组的所有内容,这里是我的查询,

  "eventID": "(.*?)",  

所以我想要所有与 eventID (Ar39084 和 Ar39079)组 1 内容匹配的内容,所以这将匹配 data2 、 data 3 、 data 4 等等,这个查询也可以匹配 event 2 、 event 3 等等。

这样我就可以在日志中替换任何地方的 Ar39084 Ar39079 Ar394354 以及与查询匹配的任何其他字符串

因此,应用替换后,我的日志可能如下所示:

活动一

 "eventID": "${variable}",
      "data2": "http://sfa.stanly.local:8787/nices-uri/msa/PRAS-             TAM80/root/BLA_Notification::LINKDOWN-ISA_NA-${variable}~2F538
      "data3": "[excm][132.19][78.65][68493435][${variable}]"
      "data4": "AGV.SDA.${variable}"

活动 2

  "eventID": "${variable}",
  "data2": "http://sfa.stanly.local:8787/nices-uri/msa/PRAS-TAM80/root/BLA_Notification::LINKDOWN-ISA_NA-${variable}~2F538
  "data3": "[excm][132.19][78.65][68493435][${variable}]"
  "data4": "AGV.SDA.${variable}"
4

2 回答 2

0

试试这个:

找什么:"eventID":\s*"\K(\w+)("[\s\S]*?)(?=\b\1\b)|\G(\w++)(?=(?:[^"](?!\3))*"\s+(?:"eventID"|\z))|\G(\w++)([\s\S]*?)(?=\b\4\b)

代替:\${variable}\2\5

你在这里有一个演示。

它应该适用于任何由字母、数字和下划线组成的标识符,只要周围有一些单词边界(这似乎是你的情况)

于 2019-04-17T13:25:11.790 回答
0

这应该有助于:

我对(Ar\d+)匹配Ar进行了分组,然后是\d+任意位数。

在此处输入图像描述

更新

基于以非 simple 开头的其他事件的可能性Ar,查找正则表达式分组更改为:

([a-zA-Z]{2}\d{5,})  // 2 characters followed by 5 (or more) digits.

这将匹配名为:
Jm37908
Za94025
Sw02834
Pt012345678(应该有超过 5 位数字)
加上其他具有类似格式的事件

您可以在这里尝试正则表达式

于 2019-04-17T01:24:06.550 回答