У меня есть следующее регулярное выражение для извлечения различных частей URL:
^
# optional http/https supplied
(?:(?P<protocol>https?):\/\/)?
# optional www. supplied
(www)?
# get the host, up to first slash/port
(?<host>[^(\/|\:\d+)]*)
# get the host, or 80 if not provided
(?:\:(?<port>\d+))?
# get the pathname, don't allow ending junk
[^\s\n]+(?<![.,!)])
Здесь можно увидеть работу с двумя URL-адресами: https://regex101.com/r/WnJ80y/1.
Однако я бы хотелдобавить к нему условное выражение, чтобы, если port
не указано, оно заполняло "80" (хотя это может быть неправильно, если это https, но сейчас давайте просто сделаем 80). Как это можно сделать?