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

如何用正则表达式保留R字符向量中含至少3个z元素的数字内容

R语言字符向量正则处理方案

你可以直接使用基础R的向量化判断+正则替换实现需求,完整实现代码如下:

# 原字符向量
names <- c("wazzzap12waaazzzaaaaapffffm12323", "hell223231", "musssaaaa225")

# 核心处理逻辑
# 若匹配连续3个及以上z,仅保留数字,否则保留原内容
result <- ifelse(
  grepl(pattern = "z{3,}", x = names),
  gsub(pattern = "\\D", replacement = "", x = names),
  names
)

规则调整说明

如果你的需求是只要总共有3个及以上z(不需要连续),只需要修改grepl的匹配模式即可:

grepl(pattern = "(.*z.*){3,}", x = names)

输出结果

运行上述代码后输出如下:

print(result)
# [1] "1212323"     "hell223231"  "musssaaaa225"

可选:tidyverse生态实现

如果你常用tidyverse体系,可以用stringr包实现相同逻辑:

library(stringr)
result <- ifelse(
  str_detect(string = names, pattern = "z{3,}"),
  str_replace_all(string = names, pattern = "\\D", replacement = ""),
  names
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:24:03