Q:

Приоритеты и последнее вхождение в регулярке

Добрый день!
Пишу небольшое расширение для корпоративного сайта на javascript.
С сайта вытягивается оригинал письма в формате plain/text. 
Требуется найти последний ip адрес ИЛИ ip-адрес, который идет после слова unknown, причем, если в письме встречается слово unknown то взять Ip-адрес, который идет сразу после него.
На данный момент имеется такое регулярное выражение:
/[([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})]|.nknown.[([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})]/gi
По этой регулярке я получаю только ПЕРВЫЙ ip-адрес. Как найти последнее вхождение в регулярке и реализовать приоритеты поиска?

A:

До конца ваш вопрос не понятен, но предлагаю такой вариант
/(?:.*unknown|.*[^\d]|^)([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/i

Возврат данных идет в 1 группе. Приоритет поиска задан в (?:.*unknown|.*[^\d]|^), то есть сначала идет попытка найти последнее (.*unknown) слово unknown за которым сразу идет ip адрес. Если такой вариант не найден, то идет поиск последнего (.*[^\d]) ip адреса и поиск ip в начале строки (^).
Пример 1 https://regex101.com/r/EEhyIg/4
Пример 2 https://regex101.com/r/EEhyIg/5
Если нужно найти первое вхождение unknownIP или последний IP, то регулярку меняем так
/(?:.*?unknown|.*[^\d]|^)([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/i

Пример 3 https://regex101.com/r/EEhyIg/6
Пример 4 https://regex101.com/r/EEhyIg/7

