You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R的stringr包将字符串末尾的*替换为开头的^

回答

你可以通过正则捕获组实现需求,str_replace_all的替换参数本身不支持直接写入正则匹配逻辑,但支持通过反向引用调用匹配阶段捕获的内容,正确实现代码如下:

library(stringr)
x <- c("fair*", "beaut*")
str_replace_all(x, "^(.*)\\*$", "^\\1")
#> [1] "^fair" "^beaut"

规则说明

  • 匹配模式^(.*)\\*$:
    • ^匹配字符串开头,$匹配字符串结尾,确保整段匹配
    • (.*)是捕获组,会暂存星号之前的所有字符内容
    • \\*匹配末尾的星号(星号是正则元字符,需要加反斜杠转义)
  • 替换规则^\\1:
    • 开头的^就是你要添加到字符串首部的插入符号,替换串中不需要对^做额外转义
    • \\1是反向引用,会直接代入前面捕获组里存储的字符串内容

你之前尝试失败的原因是仅单独匹配了末尾的星号,修改操作只能作用在星号所在的位置,没法直接调整字符串开头的内容,通过捕获组提取有效内容再重组即可完成需求。


内容的提问来源于stack exchange,提问作者Lucas De Abreu Maia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:36:03