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

如何在R语言中提取点后1位数字并得到目标字符串输出?

解决R语言中提取指定内容的正则方案

处理向量x

要保留每个字符串中.后的第一位数字,去掉该数字之后的所有内容,使用sub配合捕获组实现:

x = c("Apple.4XD", "Home.23", "Tea.459", "So.5S6")
x_result <- sub("(\\.[0-9]).*", "\\1", x)
x_result
# 输出:[1] "Apple.4" "Home.2" "Tea.4" "So.5"

正则说明

  • (\\.[0-9]):捕获.和紧随其后的第一位数字,作为分组1
  • .*:匹配该数字之后的所有任意字符
  • 替换为\\1:保留分组1的内容,即保留.数字部分,去掉后续所有字符

处理向量y

需要分两种情况处理:如果最后一段无.则直接保留;如果最后一段无效(无数字的.),则提取最后一个带有.数字的片段,保留前缀和第一位数字,用一个正则即可实现:

y = c("Apple22.1/Apple23", "Home.23/Home.2S/Home")
y_result <- sub(".*/(\\w+)$|.*?(\\w+)\\.([0-9]).*", "\\1\\2\\3", y)
y_result
# 输出:[1] "Apple23" "Home2"

正则说明

  • 分支1 .*/(\\w+)$:匹配最后一个/之后的所有单词字符(即最后一段),捕获为分组1,用于直接保留无.的最后一段
  • 分支2 .*?(\\w+)\\.([0-9]).*:非贪婪匹配任意字符,捕获.前的前缀(分组2)和.后的第一位数字(分组3),用于处理需要提取数字的情况
  • 替换为\\1\\2\\3:优先使用分组1的内容,若无则拼接分组2和分组3的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:05:33