Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从html文件中提取文件名_R_Regex_String_Extract - Fatal编程技术网

R 从html文件中提取文件名

R 从html文件中提取文件名,r,regex,string,extract,R,Regex,String,Extract,这是我正在处理的字符串的一个示例 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-0

这是我正在处理的字符串的一个示例

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>&nbsp;</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>&nbsp;</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>&nbsp;</td></tr>")
我需要提取R包的名称。我可以使用
sub
这样做:

> gsub("(.\\.zip).*", "\\1", sub(".*href[[:punct:]]{2}", "", string))
[1] "ABC.RAP_0.9.0.zip"     "ABCanalysis_1.2.1.zip" "ABCoptim_0.15.0.zip"  

正如您所见,我使用了两次
gsub
,我正在寻找一种更简单的方法,只调用一次
gsub
。我只想使用R基函数来完成它。

不要使用正则表达式来解析HTML。使用
rvest

library(rvest)

url <- 'https://dirichlet.mat.puc.cl/bin/windows/contrib/3.3/'

packageList <- url %>% read_html() %>% html_nodes("a") %>% html_text()

# remove extra entries
packageList <- packageList[7:length(packageList)]

head(packageList)

[1] "A3_1.0.0.zip"           "ABC.RAP_0.9.0.zip"      "ABCanalysis_1.2.1.zip"  "ABCoptim_0.15.0.zip"    "ABCp2_1.2.zip"         
[6] "ABHgenotypeR_1.0.1.zip"
库(rvest)
url%html\u节点(“a”)%%>%html\u文本()
#删除额外条目

packageList不要使用正则表达式解析HTML。使用
rvest

library(rvest)

url <- 'https://dirichlet.mat.puc.cl/bin/windows/contrib/3.3/'

packageList <- url %>% read_html() %>% html_nodes("a") %>% html_text()

# remove extra entries
packageList <- packageList[7:length(packageList)]

head(packageList)

[1] "A3_1.0.0.zip"           "ABC.RAP_0.9.0.zip"      "ABCanalysis_1.2.1.zip"  "ABCoptim_0.15.0.zip"    "ABCp2_1.2.zip"         
[6] "ABHgenotypeR_1.0.1.zip"
库(rvest)
url%html\u节点(“a”)%%>%html\u文本()
#删除额外条目

packageList我可以使用以下简单的正则表达式解决我的问题:

> gsub(".*>(.*\\.zip)<.*", "\\1", string)
[1] "ABC.RAP_0.9.0.zip"     "ABCanalysis_1.2.1.zip" "ABCoptim_0.15.0.zip"  

>gsub(.*>(.\\\.zip)我可以使用以下简单的正则表达式解决我的问题:

> gsub(".*>(.*\\.zip)<.*", "\\1", string)
[1] "ABC.RAP_0.9.0.zip"     "ABCanalysis_1.2.1.zip" "ABCoptim_0.15.0.zip"  

>gsub(“.*>(.\\.zip)
gsub(“([^>]+\\.zip)”|.,“\\1”,字符串)
gsub(“([^>]+\.zip)”|.,“\\1”,字符串)
我感谢您的帮助,您的答案很好,但正如我之前所说,我不想依赖R base以外的任何额外软件包。+1!我感谢您的帮助,您的答案很好,但正如我之前所说,我不想依赖R base以外的任何额外软件包。+1!