第8课:解析并提取 URL 中的数据

在处理网络中的文件或资源时,你经常会遇到 URI 或 URL。这类地址可以被解析并使用。虽然大多数标准库中都提供了解析和构建这类标识符的类,但如果你需要在日志文件或大段文本中匹配它们,也可以通过正则表达式轻松提取出结构化的信息。

URI(统一资源标识符)通常由以下部分组成:协议(scheme)主机名(host)端口号(port,可选)资源路径(path)。以下是一个示例:

http://google.com:80/page

在本练习中,请尝试使用正则表达式,从给出的资源地址中提取出协议、主机和端口号。

练习 8: 解析并提取 URL 中的数据
Task Text Capture Groups  
捕获 ftp://file_server.com:21/top_secret/life_changing_plans.pdf ftp file_server.com 21 To be completed
捕获 https://regexone.com/lesson/introduction#section https regexone.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
提示

我们需要匹配 URI 中的三个组成部分:首先,协议部分是由字母和数字组成的,因此可以使用 (\w+):// 来匹配。其次,主机名中可能包含非字母数字字符,比如连字符(-)或点号(.),所以我们需要显式地包含这些字符,使用 ://([\w\-\.]+) 来匹配主机名部分。最后,端口号是 URI 中的可选部分,前面会有一个冒号,可以用表达式 (:\d+) 来匹配,而为了提取具体数字,也可以写成 :(\d+)。把它们组合起来,我们最终可以使用如下完整的正则表达式来捕获所有需要的数据:(\w+)://([\w\-\.]+)(:(\d+))?

解决上面的问题以继续到, 或者可以参考答案