При работе с файлами и ресурсами в Интернете вы часто будете сталкиваться с URL (сокр. от англ. «Uniform Resource Locator») и URI (сокр. от англ. «Universal Resource Identifier»), которые можно спарсить, и затем работать с ними напрямую.
URI — это представление ресурса, которое обычно состоит из протокола, хоста, порта (необязательно) и пути ресурса, например:
https://ravesli.com:80/page
Протокол описывает способ соединения, хост и порт описывают источник ресурса, а полный путь описывает местоположение ресурса в источнике.
В следующем упражнении попробуйте извлечь протокол, хост и порт из всех перечисленных ресурсов.
Задание | Текст | Результат | |
Захватить | ftp://file_server.com:21/top_secret/life_changing_plans.pdf | ftp file_server.com 21 |
![]() |
Захватить | https://ravesli.com/lesson/introduction#section | https ravesli.com |
![]() |
Захватить | file://localhost:4040/zip_file | file localhost 4040 |
![]() |
Захватить | https://s3cur3-server.com:9999/ | https s3cur3-server.com 9999 |
![]() |
Захватить | market://search/angry%20birds | market search |
![]() |
Решение | Мы должны соответствовать каждому из трех компонентов:
все протоколы в нашем списке являются буквенно-цифровыми, поэтому для соответствия их форме можно использовать выражение (\w+)://; хосты могут содержать не буквенно-цифровые символы, такие как тире или точка, поэтому нам нужно будет явно включить эти символы с помощью выражения ://([\w\-\.]+); порт является необязательной частью URI, перед которым стоит двоеточие, и для соответствия ему можно использовать выражение (:(\d+)). Теперь совместим все компоненты и получим полное регулярное выражение (\w+)://([\w\-\.]+)(:(\d+))?. |