使用REGEXREPLACE按首个路径段对URL路径分组
用REGEXREPLACE基于首个路径段动态分组URL
首先,咱们先明确核心需求:要从给定的URL路径里,自动提取首个路径段(或者根路径)作为分组名,不用提前硬编码foo、xyz这些分组值,最后得到去重后的分组列表。
步骤1:用REGEXREPLACE提取每个URL的分组标识
针对每个URL路径,我们可以用正则捕获首个路径段,根路径单独处理。在Google Sheets(REGEXREPLACE最常用的场景之一)里,你可以用这个公式:
=IFERROR(REGEXREPLACE(A1, "^/([^/]+).*$", "$1"), "/")
把这个公式放到B列,对应A列的每个URL,就能得到每个URL对应的分组标识:
/→//foo/→foo/foo/bar→foo/xyz/abc→xyz/xyz→xyz
正则表达式解释
咱们拆解一下用到的正则^/([^/]+).*$:
^/:匹配URL开头的斜杠([^/]+):捕获组1,匹配首个路径段——这里的[^/]表示非斜杠字符,+表示至少一个,所以会把/后面到下一个/(或者结尾)的内容全部捕获.*$:匹配路径段后面的所有内容(不管有没有)
IFERROR函数是用来处理根路径/的情况:当正则匹配失败(也就是根路径没有后续路径段),就返回/作为分组标识。
步骤2:生成最终分组列表
如果要得到去重后的分组结果(就是你期望的/ foo xyz),只需要对B列的结果用UNIQUE函数:
=UNIQUE(B:B)
这样就能自动生成所有动态提取的分组,完全不需要预定义任何分组名——正则会自动把每个URL的首个路径段抓出来当分组标识,完美解决你的核心问题。
额外优化:用单个REGEXREPLACE搞定(不用IFERROR)
如果你想只用一次REGEXREPLACE实现,可以调整正则和替换逻辑:
=REGEXREPLACE(A1&"/", "^/([^/]+)/.*$|^/$", "$1")
这里给每个URL末尾加了个斜杠,确保根路径和非根路径都能被正则统一匹配,替换后自动得到正确的分组标识。
内容的提问来源于stack exchange,提问作者J. Ayo
相关产品推荐
相关产品推荐

