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

如何在R语言中提取与字符串中间字符关联的完整数字?

解决方法

核心思路是先提取所有与点(.)直接相邻的数字块,再从中筛选出长度最长的(若多个数字块长度相同,则取位置最靠前的)。

正则表达式说明

使用的正则为:(?<=\\.)\\d+|\\d+(?=\\.)

  • (?<=\\.)\\d+:匹配前面紧跟一个点的连续数字(例如"1.345"里的"345"、"..345"里的"345")
  • \\d+(?=\\.):匹配后面紧跟一个点的连续数字(例如"123.5"里的"123"、".234."里的"234")
  • 用|连接两种模式,覆盖所有与点直接关联的数字块。

R代码实现

library(stringr)

vec <- c("1.345", "123.5", ".234.", "..345", "..3.5") 

# 提取所有符合条件的数字块
extracted_blocks <- str_extract_all(vec, "(?<=\\.)\\d+|\\d+(?=\\.)")

# 筛选每个字符串的目标数字
target_numbers <- sapply(extracted_blocks, function(blocks) {
  if (length(blocks) == 0) return(NA)
  # 找到最长的数字块,长度相同则取第一个
  blocks[which.max(nchar(blocks))][1]
})

# 输出结果
target_numbers

运行代码后得到的结果为:

[1] "345" "123" "234" "345" "3"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:35:28