R语言:如何仅替换三位数字后的+为-(保留匹配数字)
解决R语言中仅替换三位数字后的+为-的问题
针对字符串str1 <- "abc sdak+ 123+",你需要仅将**紧跟三位数字后的+**替换为-,同时保留其他+和三位数字,下面提供两种可行方案:
方案1:使用捕获组
通过捕获组保留三位数字,替换时复用捕获内容并将+替换为-:
str1 <- "abc sdak+ 123+" gsub("([0-9]{3})\\+", "\\1-", str1)
- 正则
([0-9]{3})\+:用()捕获三位数字,匹配后续的+ - 替换符
\\1-:\\1引用捕获到的三位数字,拼接-实现仅替换+
方案2:使用正向后顾断言
利用零宽断言仅匹配前面是三位数字的+,直接替换为-:
str1 <- "abc sdak+ 123+" gsub("(?<=[0-9]{3})\\+", "-", str1)
- 正则
(?<=[0-9]{3})\+:(?<=...)是正向后顾断言,仅匹配前面为三位数字的+,不会选中数字本身 - 直接替换该+为-,无需额外保留内容
两种方法执行后都会得到预期结果:"abc sdak+ 123-"
内容的提问来源于stack exchange,提问作者adl
相关产品推荐
相关产品推荐

