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

  Юрий  | 

  Обновл. 22 Ноя 2019  | 

 230

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

URI (с англ. «Uniform Resource Identifiers» = «Унифицированные идентификаторы ресурса») — это представление ресурса, которое обычно состоит из протокола, хоста, порта (необязательно) и пути ресурса, например:

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 (2 оценок, среднее: 5,00 из 5)
Загрузка...

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

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