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

标签 r regex gsub

我在用

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/

    相关文章:

    如果发生某些情况,R 在 data.table 中填充前导值和滞后值

    r - 如果遇到非有限值(NA、NaN 或 Inf),如何强制出错

    r - 从数据框中选择具有多列值的唯一组合的行

    r - 使用 R 区分 "Mr"和 "Mrs"中的 Mr

    regex - 需要从 url 中删除特定参数

    ruby - 如何使用 `gsub` 将多个子字符串替换为相同的字符串

    r - R函数每n个字开始换行吗?

    regex - Notepad++ 查找并替换 "GUIDs"中的下划线字符

    regex - R传递变量中的正面展望

    javascript - 正则表达式替换 : match variable number next to integer within substitute string