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

如何在R语言中使用stringr提取唯一的字符串匹配模式?

在R中提取字符串唯一匹配项的方法

针对你遇到的提取后保留唯一匹配项的需求,有两种高效的实现方式:

方法1:先提取所有匹配,再去重

先用str_extract_all提取全部匹配结果,再通过unique()过滤重复值。设置simplify = TRUE可将结果转为矩阵,转成向量后去重更便捷:

library(stringr)

# 第一个示例输入
examples <- c("G06F", "G06F", "H04L", "H04L", "H04L", "H04L", "H04L")
# 提取前3个字符(可根据你的匹配规则调整正则表达式)
extracted <- str_extract_all(examples, "^.{3}", simplify = TRUE) %>% as.vector()
# 去重得到唯一值
unique(extracted)
# 输出: [1] "G06" "H04"

# 第二个示例输入
input2 <- c("B01J", "B01J", "B22F", "B22F", "B22F", "G01N")
extracted2 <- str_extract_all(input2, "^.{3}", simplify = TRUE) %>% as.vector()
unique(extracted2)
# 输出: [1] "B01" "B22" "G01"

若未设置simplify = TRUE,结果会是列表格式,需先用unlist()展开再去重:

extracted_list <- str_extract_all(examples, "^.{3}")
unique(unlist(extracted_list))

方法2:先对原向量去重,再提取(更高效)

如果原向量存在大量重复元素,先通过unique()去重原数据,再用str_extract提取,能减少不必要的计算,提升处理速度:

# 第一个示例
examples_unique <- unique(examples)
str_extract(examples_unique, "^.{3}")
# 输出: [1] "G06" "H04"

# 第二个示例
input2_unique <- unique(input2)
str_extract(input2_unique, "^.{3}")
# 输出: [1] "B01" "B22" "G01"

处理单字符串多匹配的场景

如果单个字符串中包含多个目标匹配项,需先提取所有匹配结果,再统一去重:

input3 <- c("G06F H04L", "G06F", "H04L B01J")
# 提取所有符合格式的3位代码(正则匹配大写字母+数字组合)
all_matches <- unlist(str_extract_all(input3, "\\b[A-Z0-9]{3}\\b"))
# 去重
unique(all_matches)
# 输出: [1] "G06" "H04" "B01"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:10:30