gsub / sub在某些字符之间提取

时间:2019-03-07 22:34:08

标签: r regex

如何从R中的以下字符串中提取数字/ ID?

link <- "D:/temp/sample_data/0000098618-13-000011.htm"

我只想提取0000098618-13-000011

即丢弃.htmD:/temp/sample_data/

我尝试了grep和gsub却没有多大运气。

1 个答案:

答案 0 :(得分:3)

1)基本名称:使用basename后跟sub

sub("\\..*", "", basename(link))
## [1] "0000098618-13-000011"

2)file_path_sans_ext

library(tools)
file_path_sans_ext(link)
## [1] "0000098618-13-000011"

3)子

sub(".*/(.*)\\..*", "\\1", link)
## [1] "0000098618-13-000011"

4)gsub

gsub(".*/|\\.[^.]*$", "", link)
## [1] "0000098618-13-000011"

5)分裂

sapply(strsplit(link, "[/.]"), function(x) tail(x, 2)[1])
## [1] "0000098618-13-000011"

6)阅读表。如果link是向量,则仅当所有元素具有相同数量的/分隔的分量时,此函数才起作用。此外,这还假定唯一的点是与扩展部分分开的点。

DF <- read.table(text = link, sep = "/", comment = ".", as.is = TRUE)
DF[[ncol(DF)]]
## [1] "0000098618-13-000011"