【问题标题】:filter paths that have only one "/" in R using regular expression使用正则表达式过滤 R 中只有一个“/”的路径
【发布时间】:2021-10-03 16:09:19
【问题描述】:

我有一个不同路径的向量,例如

 levs<-c( "20200507-30g_25d" , "20200507-30g_25d/ggg" , "20200507-30g_25d/grn", "20200507-30g_25d/ylw", "ggg" , "grn", "tre_livelli", "tre_livelli/20200507-30g_25d", "tre_livelli/20200507-30g_25d/ggg", "tre_livelli/20200507-30g_25d/grn", "tre_livelli/20200507-30g_25d/ylw" , "ylw" )

这实际上是递归设置为 TRUE 的 list.dirs 的输出。

我只想识别只有一个子文件夹的路径(即“20200507-30g_25d/ggg”、“20200507-30g_25d/grn”、“20200507-30g_25d/ylw”)。

我想过滤向量以仅找到那些只有一个“/”的路径,然后将其与具有多个“/”的路径进行比较以消除部分路径。

我尝试使用正则表达式,例如:

rep(levs,pattern='/{1}', value=T)

但我明白了:

 "20200507-30g_25d/ggg"             "20200507-30g_25d/grn"             "20200507-30g_25d/ylw"             "tre_livelli/20200507-30g_25d"     "tre_livelli/20200507-30g_25d/ggg" "tre_livelli/20200507-30g_25d/grn" "tre_livelli/20200507-30g_25d/ylw"

知道如何进行吗?

【问题讨论】:

    标签: r regex string filter path


    【解决方案1】:

    /{1} 是一个等于/ 的正则表达式,只匹配字符串中任意位置的/,其中可以有多个/。请看tag page

    使用{1} 作为单重复量词是无害的,但从来没有用处。这基本上表明缺乏经验和/或困惑。

    h{1}t{1}t{1}p{1} 与更简单的表达式http(或ht{2}p)匹配相同的字符串,但正如您所见,重复的{1} 只会使其更难阅读。

    你可以使用

    grep(levs, pattern="^[^/]+/[^/]+$", value=TRUE)
    # => [1] "20200507-30g_25d/ggg"         "20200507-30g_25d/grn"         "20200507-30g_25d/ylw"         "tre_livelli/20200507-30g_25d"
    

    regex demo

    • ^ - 匹配字符串的开头
    • [^/]+- 除了/ 之外的一个或多个字符
    • / - 一个 / 字符
    • [^/]+- 除了/ 之外的一个或多个字符
    • $ - 字符串结束。

    注意:如果字符串中唯一/之前或之后的部分可以为空,请将+替换为*^[^/]*/[^/]*$

    【讨论】:

      【解决方案2】:

      带有str_count 的选项用于计算/ 的实例数

      library(stringr)
      levs[str_count(levs, "/") == 1 ]
      

      -输出

      [1] "20200507-30g_25d/ggg"         "20200507-30g_25d/grn" 
      [3] "20200507-30g_25d/ylw"         "tre_livelli/20200507-30g_25d"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 2017-06-19
        • 1970-01-01
        相关资源
        最近更新 更多