如何在Google Sheets中用REGEXEXTRACT提取含空格的PDF链接
提取Google Sheets中多PDF链接并转为HTML链接的解决方案
要实现从A列字符串中提取所有PDF链接、替换空格为%20并包装成HTML元素,可使用以下适配新版Google Sheets的公式:
=BYROW(A1:A, LAMBDA(cell, IF(cell="",,TEXTJOIN(", ", TRUE, ARRAYFORMULA("<a href='"&SUBSTITUTE(REGEXEXTRACT(SPLIT(REGEXREPLACE(cell, "(https://.*?\.pdf)", "|$1|"), "|"), "https://.*?\.pdf"), " ", "%20")&"'>PDF链接</a>"))))
公式拆解
REGEXREPLACE(cell, "(https://.*?\.pdf)", "|$1|"):给每个PDF链接前后添加|分隔符,方便后续拆分筛选SPLIT(..., "|"):按分隔符拆分字符串,得到包含链接与其他文本的数组REGEXEXTRACT(..., "https://.*?\.pdf"):从拆分结果中精准提取所有PDF链接SUBSTITUTE(..., " ", "%20"):将链接中的空格替换为URL编码格式%20"<a href='"&...&"'>PDF链接</a>":把处理后的链接包装为HTML锚点元素TEXTJOIN(", ", TRUE, ...):将同一单元格内的多个HTML链接用逗号空格分隔合并BYROW(A1:A, LAMBDA(cell, ...)):遍历A列每个单元格,空单元格返回空值,避免无效输出
旧版Google Sheets兼容方案
如果你的Google Sheets版本不支持BYROW函数,可使用以下数组公式替代(需确保A列空值已处理):
=ARRAYFORMULA(IF(A1:A="",,TEXTJOIN(", ", TRUE, ARRAYFORMULA("<a href='"&SUBSTITUTE(REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A, "(https://.*?\.pdf)", "|$1|"), "|"), "https://.*?\.pdf"), " ", "%20")&"'>PDF链接</a>"))))
测试示例
若A1单元格内容为:
文档1:https://example.com/report Q3.pdf 文档2:https://test.com/guide 2024.pdf
公式输出结果为:<a href='https://example.com/report%20Q3.pdf'>PDF链接</a>, <a href='https://test.com/guide%202024.pdf'>PDF链接</a>
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

