我正在尝试使用 R 中的 str_replace
删除两个模式。
我想删除的模式是 \\d+_
和 Baskets
我第一次尝试:
> library(stringr)
> variables <- c("1_SmallBaskets", "2_Medium", "3_High")
> str_replace(variables, "Baskets|\\d+_", "")
[1] "SmallBaskets" "Medium" "High"
据我所知,由于模式 \\d+_
首先出现,所以它被替换,但随后它移动到下一个而不替换 Baskets
然后我尝试使表达式变得贪婪(下面的示例),但这似乎只是在检查表达式 Baskets
> str_replace(variables, "Baskets|\\d+_/g", "")
[1] "1_Small" "2_Medium" "3_High"
我已经测试语法 Small|High
有效,即替换 Small 或 High,所以我不明白为什么在尝试替换数字和字符时,相同的逻辑不适用
最佳答案
使用 str_replace
,您只需替换第一次出现。使用 str_replace_all
,您将替换所有出现,即一个字符串中的所有匹配项。看这段代码:
> library(stringr)
> variables <- c("1_SmallBaskets", "2_Medium", "3_High")
> str_replace(variables, "Baskets|\\d+_", "")
[1] "SmallBaskets" "Medium" "High"
> str_replace_all(variables, "Baskets|\\d+_", "")
[1] "Small" "Medium" "High"
此外,您实际上可以在这里利用 gsub
:
> gsub("Baskets|\\d+_", "", variables)
[1] "Small" "Medium" "High"
关于regex - 在 R 中使用正则表达式删除两种模式(字符串和数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268264/