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

时间:2015-06-15 02:56:59

标签: regex r stringr

这将是愚蠢的。

我有一个字符串:

word <- "dirtyboards.csv" 

我想删除csv部分并获取“脏板”。

我在尝试:

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

我得到了回报:“脏板”。 “.csv”之前的“s”丢失了。

我知道我能做到,

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

4 个答案:

答案 0 :(得分:7)

尝试

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

另一个选项适用于提供的示例(并非非常具体)

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

更新

包括&#39; foo.csv.csv&#39;,

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

答案 1 :(得分:7)

Base R有一个ap:

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

## [1] "dirtyboards"

答案 2 :(得分:1)

如果您的情况如此呈现,您可以尝试:

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

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

答案 3 :(得分:0)

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