删除第一个和第二个下划线之前和之后的字符提取第一个和第二个下划线之间的字符串

Bal*_*ken 3 regex r gsub

我在用

gsub(".*_","",ldf[[j]]),1,nchar(gsub(".*_","",ldf[[j]]))-4)
Run Code Online (Sandbox Code Playgroud)

创建要写入的路径和文件名。它适用于lfd只有一个下划线的名称。具有另一个下划线的文件名,它会切断第二个下划线前面的所有内容。

我有例如: Arof_07122016_2.csv我想要07122016,但我得到2. 但我不明白为什么会这样。如何使用这一行只截断第一个下划线中的字符并保留第二个?

Wik*_*żew 6

看来你想要

sub("^[^_]*_([^_]*).*", "\\1", ldf[[j]])
Run Code Online (Sandbox Code Playgroud)

查看正则表达式演示

模式匹配

  • ^ - 字符串的开始
  • [^_]* - 0+ 个字符,除了 _
  • _ - 一个underascxore
  • ([^_]*) - 捕获组 #1:除此之外的任何 0+ 个字符 _
  • .* - 字符串的其余部分。

\1在替换模式只保留在结果中捕获的值。

R演示

v <- c("Arof_07122016_2.csv", "Another_99999_ccccc_2.csv")
sub("^[^_]*_([^_]*).*", "\\1", v)
# => [1] "07122016" "99999" 
Run Code Online (Sandbox Code Playgroud)