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

如何使用stringr的str_extract在mutate中提取以rs开头以数字结尾的子串

正则表达式理解误区说明

你使用的正则^rs*\\d$返回NA,核心是3个正则语法的理解偏差:

  • *量词的作用理解错误:*是匹配其前方紧邻的单个字符0次及以上,并非你误以为的“匹配任意内容”通配符。你写的rs*实际匹配逻辑是「字符r后接0个或多个s」,可以命中r、rs、rss等,完全不涉及对数字的匹配规则。
  • 数字匹配没有加对应量词:\\d仅能匹配单个数字字符,你需要提取的1234是4个连续数字,未加量词的情况下只能匹配rs后仅接1位数字的场景。
  • 结束锚点$误用:$表示匹配内容必须位于整个字符串的末尾,你要提取的rs1234后还有-<b>C</b>的剩余内容,加了$后正则要求从字符串开头到结尾全量匹配,自然不可能命中目标子串。

参考修正写法(仅作为误区理解的验证)

要提取rs开头后接连续数字的子串,正则可写为^rs\\d+,测试如下:

str_extract("rs1234-<b>C</b>","^rs\\d+")
# 输出 [1] "rs1234"

内容的提问来源于stack exchange,提问作者monotonic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 20:33:03