regex - 在 R 中使用正则表达式删除两种模式(字符串和数字)

标签 regex r

我正在尝试使用 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/

相关文章:

r - ggplot2 注释中文本高度的单位是什么?

出于性能原因,Java String.split 传递预编译的正则表达式

javascript - 检查输入字符串中是否至少出现一个非数值

r - 每年独特事件的累计总和

r - 寻找增长曲线的最大梯度

r - 创建决策树

JavaScript 正则表达式 - 尝试匹配 ( 5', 78' , 8 0')(90' +2') 中的所有数字,前面不带 +

javascript - 我需要使用正则表达式和 Javascript 匹配 url 路径的特定部分

python - 如何使用正则表达式python提取多行文本

R - 将宽数据 reshape 为长数据后文件大小急剧增加