【发布时间】:2021-08-24 10:31:47
【问题描述】:
我正在尝试从 url 中的第三个 / 开始获取字符串。
这是网址:
http://192.168.1.253:18888/2021/03/11/896459e4-875f-455a-a2cb-768c879555e7.png
我希望得到/2021/03/11/896459e4-875f-455a-a2cb-768c879555e7.png
所以我使用了以下正则表达式(?:\/\/.+)\/.+
?: 标记为非捕获组,因此不应匹配 //192.168.1.253:18888。
但是当我在 regex101.com 中测试时,它的结果是//192.168.1.254:18888/2021/03/11/896459e4-875f-455a-a2cb-768c879555e7.png。
这是为什么呢?
【问题讨论】:
-
非捕获组使用它们匹配的文本,它们不是后视。你需要
(?<!\/)\/[^\/].*或类似的东西。更好的是,使用您的语言的 URL 解析功能。 -
请将您的编程语言添加到标签 - 每种语言的正则表达式更改。
-
您可以匹配
http://直到第一个/并捕获其余的http://[^/]+(.+)