我正在编写一个正则表达式,尝试将URL的每个部分放入不同的捕获组中以进行提取:
我目前的内容如下:
- 协议 (http,https)
- 子域名 (sub)
- 域名 (domain)
- 域名扩展名 (com,net)
- 路径 (/path/to/file - 这是文件所在目录的路径)
- URI (文件名)
- URI扩展名 (文件扩展名 - js,css,pdf)
示例URL:
http://domain.com/path1/to/file.js
http://domain.com/path-dash/to-dash/file.js
http://domain.com/path-dash/to-dash/file-name.js
https://sub.domain.com/path/to/file.js
http://sub.domain-dash.net/path/to/file.js
http://sub-dash.domain.com/path/to/file.js
http://sub-dash.domain-dash.com/path/to/file.js
我目前的内容如下:
所拥有的:
/(https?):\/\/(\w+[\-]?\w+)?.?(\w+[\-]?\w+)?/gm
预期输出:
- 第一组:协议
- 第二组:子域(如果有的话,或者为空)
- 第三组:域名
- 第四组:域名扩展名
- 第五组:目录路径
- 第六组:文件名
- 第七组:文件扩展名
问题:如何将每个URL部分分别放入自己的捕获组中,覆盖我列举的所有示例?
PHP
可以使用parse-url()
,而对于C
,可以参考这篇文章:https://dev59.com/-XRB5IYBdhLWcg3wFz4g。 - Jansscanf()
函数的工作方式,我肯定会使用它,但我仍然需要将模式提取到我上面列出的捕获组中。 - user7892649