首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用正则表达式灵活修改字符串

使用正则表达式灵活修改字符串
EN

Stack Overflow用户
提问于 2018-04-11 11:06:59
回答 1查看 41关注 0票数 0

我想在所有字母对(A-Z)和一组有限的数字(例如,2-5)之间插入下划线。我可以使用str_detect()检测这个模式的存在,但是如果我想替换这些模式,我显然不能像下面那样使用正则表达式。

有没有办法维护x中的字母和数字,因为它们被str_replace_all()函数修改了?

我的目标是转换

代码语言:javascript
运行
复制
old <- c("B0", "B1", "B2", "B3", "BA4") 
new <- c("B0", "B1", "B_2", "B_3", "BA")

我试过了:

代码语言:javascript
运行
复制
library(dplyr)
library(stringr)

x <- c("B0", "B1", "B2", "B3", "BA4")

str_detect(x, "^[A-Z][2-5]")

str_replace_all(x, "^[A-Z][2-5]", "[A-Z]_[2-5]")

[1] FALSE FALSE  TRUE  TRUE FALSE
[1] "B0" "B1" "[A-Z]_[2-5]" "[A-Z]_[2-5]" "BA4" 
EN

回答 1

Stack Overflow用户

发布于 2018-04-11 11:10:32

我们可以捕获为一个组,并替换为捕获的组的反向引用

代码语言:javascript
运行
复制
str_replace_all(substr(x, 1, 2), "^([A-Z])([2-5])", "\\1_\\2")
#[1] "B0"  "B1"  "B_2" "B_3" "BA" 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49765854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档