Застрял в вопросе регулярных выражений pcre.Я пытаюсь извлечь все ips, следующие за полем («IP-адрес клиента:») в журнале AD FS.
Мой журнал выглядит следующим образом (усечено для экономии места):
EventCode=411
EventType=0
Type=Information
SidType=1
TaskCategory=Printers
OpCode=Info
Token Type:
http://schemas.microsoft.com/ws/2006/05/identitymodel/tokens/UserName
Client IP:
110.19.100.155,2603:1032:205:14::5
Error message:
******-This user can't sign in because this account is currently disabled
Итак, конецжелаемый результат заключается в том, что я получаю оба ip-адреса в поле src_ip, и что он пробует регулярное выражение только в том случае, если он находит EventCode = 411 или 512 и т. д.1007 *
(\s\n|,)(?<src_ip>(?:(?:\d{1,3}\.){3}(?:\d{1,3}))|(?:(?:::)?(?:[\dA-Fa-f]{1,4}:{1,2}){1,7}(?:[\d\%A-Fa-z\.]+)?(?:::)?)|(?:::[\dA-Fa-f\.]{1,15})|(?:::))
Работает, но не различает события только с необходимыми кодами событий.Поэтому, когда я делаю это:
(?ms)(?:EventCode=(411|512))\n.*?(\s\n|,)(?P<src_ip>(?:(?:\d{1,3}\.){3}(?:\d{1,3}))|(?:(?:::)?(?:[\dA-Fa-f]{1,4}:{1,2}){1,7}(?:[\d\%A-Fa-z\.]+)?(?:::)?)|(?:::[\dA-Fa-f\.]{1,15})|(?:::))
Он подхватывает только первый IP.
Есть идеи?