正则表达式删除 r 中的 .csv

Regex to remove .csv in r

这将是愚蠢的。

我有一个像这样的字符串:

word <- "dirtyboards.csv" 

我想删除 csv 部分并得到 "dirtyboards"。

我正在尝试:

require(stringr)
str_extract(word, ".*[^.csv]")

我进入 return:"dirtyboard"。 “.csv”之前的 "s" 丢失。

我知道我能做到,

gsub(".csv", "", word)

word <- c("dirtyboards.csv","boardcsv.csv")
sub(".csv$","",word)
[1] "dirtyboards" "boardcsv"   

尝试

library(stringr)
str_extract(word, '.*(?=\.csv)')
#[1] "dirtyboards"

适用于所提供示例的另一个选项(不是很具体)

str_extract(word, '^[^.]+')
#[1] "dirtyboards" 

更新

包括'foo.csv.csv',

word1 <- c("dirtyboards.csv" , "boardcsv.csv", "foo.csv.csv")
str_extract(word1, '.*(?=\.csv$)')
#[1] "dirtyboards" "boardcsv"    "foo.csv"    

如果你的情况如上图所示,你可以试试:

substr(word, 1, nchar(word)-4)
[1] "dirtyboards"

此代码从第一个字符开始,捕获字符串的其余部分,直到最后四个标记。解决方案完全取决于所涉及的应用程序。

Base R 有一个 ap:

word <- "dirtyboards.csv" 
tools::file_path_sans_ext(word)

## [1] "dirtyboards"