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

R语言正则表达式:提取四位数字+QUARTER左侧子串方案

R语言正则提取解决方案

明确需求:从目标字符串中提取四位数字紧跟大写QUARTER左侧的内容,同时排除如"10RUNS FAST"或"QUICKER 1"这类不符合结构的字符串。

正则方案实现

方案1:用stringr包直接提取目标内容

library(stringr)

text <- "ARC GUNNA SPARKYA  2011QUARTER HORSE."
# 正向预查匹配目标结构左侧内容,非贪婪模式避免过度匹配
result <- str_extract(text, "^.*?(?=\\s+\\d{4}QUARTER)")
# 清理末尾多余空格
result <- str_trim(result)
print(result)
# 输出:[1] "ARC GUNNA SPARKYA"

解释:

  • ^.*?(?=\\s+\\d{4}QUARTER):从字符串开头开始,匹配到一个或多个空格+四位数字+QUARTER之前的所有内容,.*?确保只匹配到目标结构的前边界,不会多取。
  • str_trim用于去除提取结果末尾残留的空格。

方案2:用基础R的gsub替换冗余部分

text <- "ARC GUNNA SPARKYA  2011QUARTER HORSE."
# 替换掉从目标结构到字符串结尾的所有内容
result <- gsub("\\s+\\d{4}QUARTER.*$", "", text)
# 清理首尾空格
result <- trimws(result)
print(result)
# 输出:[1] "ARC GUNNA SPARKYA"

解释:

  • \\s+\\d{4}QUARTER.*$精准匹配"空格+四位数字+QUARTER"及之后的全部内容,替换为空后留下需要的左侧字符串。
  • trimws是基础R自带的空格清理函数。

验证非匹配场景

对于不符合四位数字+QUARTER结构的字符串,正则不会触发修改,保留原内容:

test1 <- "10RUNS FAST"
test2 <- "QUICKER 1"

gsub("\\s+\\d{4}QUARTER.*$", "", test1) # 输出:[1] "10RUNS FAST"
gsub("\\s+\\d{4}QUARTER.*$", "", test2) # 输出:[1] "QUICKER 1"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:05:15