Google Sheets正则表达式:从URL列表提取含指定子目录的域名
解决方案:提取主域名+指定最高层级子目录
核心需求明确
需从URL中提取主域名(移除所有子域名) + 首个出现的指定子目录,规则如下:
- 剔除http/https协议、www及多级子域名(如
m.sports.yahoo.co.jp仅保留yahoo.co.jp) - 指定子目录范围:
/news/、/editorials/、/politics/、/opinion/、/second-opinions/ - 多个指定子目录共存时,取层级最高(最靠前)的目录
最终可用公式
=ArrayFormula(IFERROR( REGEXEXTRACT( REGEXREPLACE(A2:A, "^(?:https?:\/\/)?(?:.*\.)?((?:[a-zA-Z0-9-]+\.)+(?:co\.jp|co\.uk|com\.au|org\.nz|com|net|org|edu|gov|mil|ac|io|me|us|ca|de|fr|it|es|ru|cn))", "$1") & "/" & REGEXEXTRACT(A2:A, "^(?:https?:\/\/)?(?:www[0-9]*\.)?(?:.*?\/)?(news|editorials|politics|opinion|second-opinions)(?:\/.*)?$"), "^(.*\/(news|editorials|politics|opinion|second-opinions))$" ), "" ))
公式拆解
提取主域名
通过REGEXREPLACE匹配并移除协议、所有前置子域名,精准保留包含多后缀顶级域名(如co.jp、com.au)的主域名。正则内的多后缀列表可根据需求自行扩展。捕获目标子目录
用REGEXEXTRACT从原URL中抓取第一个出现的指定子目录名称,确保取到层级最高的目标目录。拼接与容错
将主域名与捕获到的子目录拼接成主域名/子目录格式,IFERROR处理不包含指定子目录的URL,返回空值避免报错。
测试验证
| 原URL | 提取结果 |
|---|---|
https://www.medpagetoday.com/opinion/second-opinions/104083 | medpagetoday.com/opinion |
https://www.politico.com/news/2023/04/18/bidens-tax-returns-00092675 | politico.com/news |
https://www.nytimes.com/2023/04/14/opinion/editorials/clarence-thomas-trips-supreme-court.html | nytimes.com/opinion |
https://m.sports.yahoo.co.jp/news/202301110/ | yahoo.co.jp/news |
扩展提示
- 新增指定子目录:在正则的
(news|editorials|politics|opinion|second-opinions)部分用|分隔添加新目录名即可 - 扩充多后缀顶级域名:在
(?:co\.jp|co\.uk|com\.au|org\.nz)部分补充需要支持的后缀,比如co.in、com.cn
内容的提问来源于stack exchange,提问作者durimar
相关产品推荐
相关产品推荐

