R语言编写正则表达式移除数据框行值中[preliminary_arm_1]的方法
R 实现移除指定固定文本片段方案
你需要删除的是完全固定的字符串[preliminary_arm_1],不需要编写复杂正则,优先选固定字符串匹配的写法,能完全避开方括号这类正则特殊字符的转义坑,稳定性和运行效率都更高。
推荐实现(零正则风险)
用R基础自带的gsub()做全局替换,开启fixed = TRUE参数,让函数按字面意思匹配目标字符串,不解析正则规则:
# 测试数据复现 branching_loc <- c("([preliminary_arm_1][antibiotic_arm] = '1') and [was_review_done]='1'", "[preliminary_arm_1][antibiotic_arm] = '1' and [was_review_done]=='1'", "[preliminary_arm_1][antibiotic_arm] = '1' and [was_review_done]=='1'", "[preliminary_arm_1][antibiotic_arm] = '1' and [was_review_done]=='1'") df <- data.frame(branching_loc) # 批量移除目标片段 df$branching_loc <- gsub( pattern = "[preliminary_arm_1]", replacement = "", x = df$branching_loc, fixed = TRUE )
处理后列的输出结果如下,其余所有语法、字段标记、符号都完全保留,仅删掉了目标片段:
> df$branching_loc [1] "([antibiotic_arm] = '1') and [was_review_done]='1'" [2] "[antibiotic_arm] = '1' and [was_review_done]=='1'" [3] "[antibiotic_arm] = '1' and [was_review_done]=='1'" [4] "[antibiotic_arm] = '1' and [was_review_done]=='1'"
正则写法(按需选用)
如果业务场景要求必须用正则实现,注意[和]是正则的特殊元字符,需要用双反斜杠转义才能被识别为普通文本,写法如下:
df$branching_loc <- gsub( pattern = "\\[preliminary_arm_1\\]", replacement = "", x = df$branching_loc )
运行结果和上面固定匹配的写法完全一致。
内容的提问来源于stack exchange,提问作者LivingstoneM
相关产品推荐
相关产品推荐

