Сопоставить второе вхождение с регулярным выражением - PullRequest
0 голосов
/ 25 февраля 2019

В строке системного журнала с форматом, изображенным ниже, я хочу получать каждый раз, когда второй раз встречаются символы между / и (:

<164>Feb 25 2019 17:25:31 FW-ATH : %ASA-4-106100: access-list foo_access_in denied tcp chicago/192.168.51.42(10050) -> new_york/192.168.65.71(59910) hit-cnt 1 first hit [0x3f890f86, 0x1a85d55c]

Точнее, и вВ этом случае я хочу получить 192.168.65.71.Для первого внутреннего IP-адреса я использовал приведенное ниже регулярное выражение, но я не знаю, как его отформатировать, чтобы захватить второй внутренний IP-адрес

Регулярное выражение: (?<=\/)(.*?)(?=\()

ФорматVLAN/IP_ADDRESS так что я не могу использовать new_york как часть регулярного выражения, имя динамическое.

Спасибо

1 Ответ

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

Если вы будете использовать осмотры, то вы получите все возможные совпадения в регулярном выражении, потому что осмотры не потребляют символы.Если вы хотите пропустить сопоставление первого IP-адреса, вы можете использовать .* перед регулярным выражением вместо положительного взгляда назад и использовать это регулярное выражение и захватить второе вхождение IP из группы1,

.*\/(.*?)(?=\()

Здесь, .*\/ захватывает любой символ жадным образом с последующим литералом / и останавливается при последнем вхождении шаблона, которому вы хотите соответствовать, и захватывает все данные после / и до ( и дает вам второе вхождение IP

Демо

...