【问题标题】:Remove some word/string from a regular expression pattern从正则表达式模式中删除一些单词/字符串
【发布时间】:2022-01-13 00:29:38
【问题描述】:

我有一个具有以下值的向量:

list <- c("test_data", "train_data", "random_forest_output", "xgboost_output", "light_gbm_output", "all_output", "all_output_final")

我需要选择所有包含"output" 单词的变量,但是对于值"all_output""all_output_final",我只需要选择"all_output_final"。 也就是说,我需要得到一个这样的列表:

new_list <- c("random_forest_output", "xgboost_output", "light_gbm_output", "all_output_final")

可以用正则表达式实现吗?

【问题讨论】:

    标签: r regex


    【解决方案1】:

    首先,调用数据对象list 会误导其他用户。一方面list 是一个重要的R 函数,另一方面您的对象“列表”不是R 列表。也就是说,使用从正则表达式函数grepl 返回的逻辑值很容易通过使用 &!通过包含字符串结尾 "$" 来消除不需要的模式,该模式表示为正则表达式。

    list[ grepl("output", list)&!grepl("^all_output$",list)]
    [1] "random_forest_output" "xgboost_output"       "light_gbm_output"     "all_output_final"  
    

    您可以将 &amp;!(和 NOT)表达式解读为“...所有前面的内容,但没有以下匹配项”

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 2022-01-27
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      相关资源
      最近更新 更多