我在用
gsub(".*_","",ldf[[j]]),1,nchar(gsub(".*_","",ldf[[j]]))-4)
创建要写入的路径和文件名。它适用于
lfd
中的名称只有一个下划线。具有另一个下划线的文件名,它会切断第二个下划线前面的所有内容。我有例如:
Arof_07122016_2.csv
我想要 07122016
,但我得到 2
.但我不明白为什么会这样。如何使用这一行只截断第一个下划线中的字符并保留第二个?
最佳答案
看来你想要
sub("^[^_]*_([^_]*).*", "\\1", ldf[[j]])
见regex demo
模式匹配
^
- 字符串开头 [^_]*
- 除 _
之外的 0+ 个字符_
- 一个underascxore ([^_]*)
- 捕获组 #1:除 _
之外的任何 0+ 个字符.*
- 字符串的其余部分。 \1
在替换模式中只保留结果中的捕获值。R demo :
v <- c("Arof_07122016_2.csv", "Another_99999_ccccc_2.csv")
sub("^[^_]*_([^_]*).*", "\\1", v)
# => [1] "07122016" "99999"
关于删除第一个和第二个下划线之前和之后的字符提取第一个和第二个下划线之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50945040/