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

R语言stringr包str_remove_all正则表达式移除指定字符失败求助

问题原因

你写的正则语法使用错误:方括号[]在正则中是字符集语法,仅能匹配单个字符,你写在方括号内的|、(等符号都会被识别为普通单个字符进行匹配,完全达不到匹配NA、.1这类多字符子串的效果。

解决方案

正则中匹配多个不同规则的内容,直接用|分隔不同规则即可,不需要加外层方括号。另外注意.是正则中的特殊通配符,要匹配普通的.需要加转义符\\。
你需要匹配的内容中,所有字母可以用R正则专用语法[[:alpha:]]匹配,子串.1转义后写为\\.1,你需求中提到的子串NA本身由字母组成,已经包含在[[:alpha:]]的匹配范围内,不需要额外单独配置。
正确代码如下:

library(stringr)
t_chart <- 'X201A61NA231.1W'
t_chart %>% str_remove_all("[[:alpha:]]|\\.1")

运行后输出结果为"20161231",符合预期要求。如果需要明确标注所有规则,也可以把正则写为[[:alpha:]]|\\.1|NA,运行结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:00:01