【发布时间】:2017-01-30 05:50:57
【问题描述】:
我正在编写一个正则表达式并尝试将 URL 的每个部分放入它自己的捕获组中以进行提取:
- 协议 (http,https)
- 子域 (子)
- 域 (域)
- 域名扩展 (com,net)
- 路径 (/path/to/file - 这是文件所在目录的路径)
- URI (文件名)
- URI 扩展名 (文件扩展名 - js、css、pdf)
示例网址:
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
所需的输出:
- Group1: 协议
- Group2: 子域(如果存在,如果不存在,则为空白)
- Group3: 域
- Group4: 域扩展
- Group5:目录路径
- Group6: 文件名
- Group7: 文件扩展名
问题:如何在上面列出的所有示例中将每个 URL 部分放入它自己的捕获组?
【问题讨论】:
-
你使用什么语言?
-
您可能正在重新发明轮子,因为大多数语言都提供了足够的内置方法来解析 URL。
-
比我更好的程序员(也许还有你)对完全相同的问题感到困惑——例如,使用
parse-url()代替PHP。对于C:stackoverflow.com/questions/726122/… -
@davidhu2000 语言是 C。
-
@Jan 我将使用 C(抱歉没有标记它,我现在就做)。但我什至不知道那个 PHP 函数,但很高兴知道,我确实用 PHP 编写了大部分应用程序。
标签: c regex capture-group