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

如何仅调用一次gsub从HTML字符串提取R包文件名(仅用R基础函数)

用单次gsub()提取R包文件名

当然可以简化!我们只需要写一个精准的正则表达式,一次调用gsub()就能从你的HTML字符串里提取出所有R包的zip文件名,完全用R基础函数实现:

实现代码

string <- c("<tr><td valign=\"top\"><img src=\"/icons/compressed.gif\" alt=\"[ ]\"></td><td><a href=\"ABC.RAP_0.9.0.zip\">ABC.RAP_0.9.0.zip</a></td><td align=\"right\">2018-03-20 21:52 </td><td align=\"right\">4.6M</td><td> </td></tr>", "<tr><td valign=\"top\"><img src=\"/icons/compressed.gif\" alt=\"[ ]\"></td><td><a href=\"ABCanalysis_1.2.1.zip\">ABCanalysis_1.2.1.zip</a></td><td align=\"right\">2017-12-09 13:59 </td><td align=\"right\"> 54K</td><td> </td></tr>", "<tr><td valign=\"top\"><img src=\"/icons/compressed.gif\" alt=\"[ ]\"></td><td><a href=\"ABCoptim_0.15.0.zip\">ABCoptim_0.15.0.zip</a></td><td align=\"right\">2018-03-20 21:53 </td><td align=\"right\">566K</td><td> </td></tr>")

# 单次gsub提取
extracted_names <- gsub('.*href="([^"]+\\.zip)".*', "\\1", string)
extracted_names

输出结果

[1] "ABC.RAP_0.9.0.zip"    "ABCanalysis_1.2.1.zip" "ABCoptim_0.15.0.zip" 

正则表达式解释

  • .*href=":匹配字符串开头到href="的所有内容(贪婪匹配,确保定位到正确的链接位置)
  • ([^"]+\\.zip):这是我们要捕获的核心内容,[^"]+表示匹配任意非双引号的字符(避免越过当前链接),\\.zip确保我们只提取以.zip结尾的文件名,括号用来标记捕获组
  • .*:匹配".zip"之后的所有剩余内容
  • \\1:替换时只保留第一个捕获组的内容,也就是我们需要的R包文件名

这样就完全替代了原来两次调用gsub()的逻辑,更简洁高效~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:58:37