You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术需求:提取URL中从首个斜杠到#后首个斜杠前的内容

正则提取URL指定片段方案

需求说明

给定一组URL,需提取域名后首个斜杠开始的纯路径部分,加上#后到首个斜杠前的锚点内容,具体示例如下:

原始URL示例

https://www.blablabla.com/one/two/?landingPageType=PASSENGER&locale=es_ES&mktport[…]eItineraryKey=99,1A&segmentKey0=0,UX6012&segmentKey1=0,UX6079#details/11723993857/
https://www.blablabla.com/foo/bar/test/#test_a
https://www.blablabla.com/foo/bar/test/#test_a/45345/43

预期提取结果

/one/two/#details
/foo/bar/test/#test_a
/foo/bar/test/#test_a

正则实现方案

使用以下正则表达式配合替换操作,即可精准提取目标内容:

正则表达式

^https?://[^/]+(/[^?#]*)(?:\?[^#]*)?(#[^/]+)?(?:/.*)?$

替换规则

将匹配到的完整URL替换为 $1$2(即第一个捕获组与第二个捕获组的内容拼接)。

正则逻辑拆解

  • ^https?://:匹配URL开头的http://或https://协议部分
  • [^/]+:匹配完整域名(从协议结束到第一个斜杠的所有字符)
  • (/[^?#]*):第一个捕获组,提取域名后的纯路径:
    • /:定位域名后的首个斜杠
    • [^?#]*:匹配从斜杠到?或#前的所有字符(排除查询参数和锚点)
  • (?:\?[^#]*)?:非捕获组,匹配并跳过可选的查询参数(?到#之间的内容)
  • (#[^/]+)?:第二个捕获组,提取有效锚点内容:
    • #:定位锚点起始符号
    • [^/]+:匹配#后到下一个斜杠前的所有字符(无后续斜杠则匹配到URL结尾)
  • (?:/.*)?:非捕获组,匹配并跳过锚点后的后续路径内容

验证效果

对每个原始URL应用上述规则后:

  1. 第一个URL:捕获组1为/one/two/,捕获组2为#details,拼接后得到/one/two/#details
  2. 第二个URL:捕获组1为/foo/bar/test/,捕获组2为#test_a,拼接后得到/foo/bar/test/#test_a
  3. 第三个URL:捕获组1为/foo/bar/test/,捕获组2为#test_a,拼接后得到/foo/bar/test/#test_a

完全符合预期结果。

内容的提问来源于stack exchange,提问作者Naiade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:52:47