Проблема №8. Парсинг URL-ов

  Юрий  | 

  Обновл. 29 Мар 2021  | 

 6249

 ǀ   1 

При работе с файлами и ресурсами в Интернете вы часто будете сталкиваться с URL (сокр. от англ. «Uniform Resource Locator») и URI (сокр. от англ. «Universal Resource Identifier»), которые можно спарсить, и затем работать с ними напрямую.

URI — это представление ресурса, которое обычно состоит из протокола, хоста, порта (необязательно) и пути ресурса, например:

https://ravesli.com:80/page

Протокол описывает способ соединения, хост и порт описывают источник ресурса, а полный путь описывает местоположение ресурса в источнике.

В следующем упражнении попробуйте извлечь протокол, хост и порт из всех перечисленных ресурсов.

Проблема №8. Парсинг URL
Задание Текст Результат
Захватить ftp://file_server.com:21/top_secret/life_changing_plans.pdf ftp
file_server.com
21
To be completed
Захватить https://ravesli.com/lesson/introduction#section https
ravesli.com
To be completed
Захватить file://localhost:4040/zip_file file
localhost
4040
To be completed
Захватить https://s3cur3-server.com:9999/ https
s3cur3-server.com
9999
To be completed
Захватить market://search/angry%20birds market
search
To be completed

Решение Мы должны соответствовать каждому из трех компонентов:

   все протоколы в нашем списке являются буквенно-цифровыми, поэтому для соответствия их форме можно использовать выражение (\w+)://;

   хосты могут содержать не буквенно-цифровые символы, такие как тире или точка, поэтому нам нужно будет явно включить эти символы с помощью выражения ://([\w\-\.]+);

   порт является необязательной частью URI, перед которым стоит двоеточие, и для соответствия ему можно использовать выражение (:(\d+)).

Теперь совместим все компоненты и получим полное регулярное выражение (\w+)://([\w\-\.]+)(:(\d+))?.

Решите задание, либо смотрите Решение.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (22 оценок, среднее: 4,59 из 5)
Загрузка...

Комментариев: 1

  1. Олег:

    А зачем экранировать символы точки и тире, которые находятся в диапазоне? Разве так нельзя?

    (\w+)://([\w-.]+):?(\d+)?

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *