我需要从 URL 列表中提取具有给定子目录的域 - /news/、/editorials/、/politics/、/opinion/、/second-opinions/、/editorials/ 等:
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
当存在多个部分时,提取到层次结构中的最高层。例如,在 /opinion/ 和 /editorials/ 的情况下:
https://www.nytimes.com/2023/04/14/opinion/editorials/clarence-thomas-trips-supreme-court.html > nytimes.com/2023/04/14/opinion
我发现 regexreplace 可以删除 http(s) 和 www:
=ArrayFormula(REGEXREPLACE(A1:A,".*(^|www\.|//)(.+)\b/?$","$2"))
但不确定如何进一步扩展它。
编辑: 我最终得到了以下解决方案,它看起来很粗糙但似乎有效:
=ArrayFormula(IFERROR(REGEXEXTRACT(""&A2:A,"^(?:https?:\/\/)?(?:www[0-9]*\.)?(.*?\/(news|opinions?|editorials?))(?:\/.*)?$"),""))
仍在努力如何将任意长度的复杂子域截断为域,就像在假设中一样
https://m.sports.yahoo.co.jp/news/202301110/ > yahoo.co.jp/news
。
它可以是任何 TLD/ccTLD。