r - 使用grepl提取R中的子字符串

标签 r string dataframe substring

我有一个表格,其中的字符串列格式如下

abcdWorkstart.csv
abcdWorkcomplete.csv

我想提取该文件名中的最后一个单词。所以我认为开始模式是“工作”这个词,结束模式是“.csv”。我用 grepl 写了一些东西,但没有用。
grepl("Work{*}.csv", data$filename)

基本上我想提取 Work 和 .csv 之间的任何内容

期望的结果:
start
complete

最佳答案

作为替代方法,删除您不想要的所有内容。

x <- c("abcdWorkstart.csv", "abcdWorkcomplete.csv")

gsub("^.*Work|\\.csv$", "", x)
#[1] "start"    "complete"

请注意:
我必须使用 gsub .因为我先删除了^.*Work然后 \\.csv$ .

对于 [\\s\\S]\\d\\D ...(不适用于 [g]?sub)

https://regex101.com/r/wFgkgG/1

与 akruns 方法一起使用:
regmatches(v1, regexpr("(?<=Work)[\\s\\S]+(?=[.]csv)", v1, perl = T))
str1<-
'12
.2
12'

gsub("[^.]","m",str1,perl=T)
gsub(".","m",str1,perl=T)
gsub(".","m",str1,perl=F)
.也匹配 \n使用 R 引擎时。

关于r - 使用grepl提取R中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060891/

相关文章:

JAVA删除字符串中最后一个 "*"

c++ - regex_replace 问题

r - 将单列数据框转换为具有多行和命名列的数据框

r - 如何从数据框的多列中删除异常值

r - 使用docker时如何运行带有入口点的Rscript?

r - 使用 Rtools/MinGW 编译 Armadillo

r - 在Docker容器中绘制R对象

r - 在运行期间自动将焦点移至控制台

python - 按条件选择行

python - Pandas 有没有办法过滤字符串中包含的列中的行