从正则表达式模式中删除一些单词/字符串
Posted
技术标签:
【中文标题】从正则表达式模式中删除一些单词/字符串【英文标题】: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")
可以用正则表达式实现吗?
【问题讨论】:
【参考方案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"
您可以将 &!
(和 NOT)表达式解读为“...所有前面的内容,但没有以下匹配项”
【讨论】:
以上是关于从正则表达式模式中删除一些单词/字符串的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式删除第一个单词并使用 c# 将第二个单词的第一个字符大写