Без угловых скобок "<", ">" работает совсем не так, - в таком случае, регулярное выражение ничего не обнаруживает. В микротике регулярки основаны на PHP PCRE, а часть выражения "(?<action>\S+)" - это "Named Capture Group". Может быть, мое выражение работает вообще с любой из возможных "Named Capture Group", за которым следует "in.addr.arpa". Вот ссылка, откуда узнал об этом -
https://regex101.com/r/sW8kS0/1 . Копипаст этого выражения:
Код: Выделить всё
.+HappyMK\s?(?<action>\S+)\s(?<chain>\w+):\sin:(?<int_in>\S+)\sout:(?<int_out>\S+), src-mac\s(?<src_mac>\S+),\sproto\s(?<prot>\w+)(\s(?<flags>\S+),|,)\s(?<src_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<src_port>\d+)->(?<dest_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<dest_port>\d+),(\s(?<NAT>\w+)\s\((?<src_nat_localip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<src_nat_local_port>\d+)->(?<src_nat_public_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<src_nat_public_port>\d+)\)->(?<dest_nat_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<dest_nat_port>\d+),)?(\sprio\s(?<prio>\d+->\d+),)?\slen\s(?<len>\d+)
Хотел бы узнать о "Named Capture Groups" и их синтаксисе подробнее, - сейчас в процессе поиска, но информации не много.