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

如何在R中使用正则表达式提取竖线|前面的匹配内容

R提取竖线前字符的可行解决方案

竖线|是正则表达式中的特殊元字符,默认代表「逻辑或」,你之前匹配失败大概率是没有对该字符进行转义,导致正则没有识别到普通竖线。

方法1:使用stringr包的str_extract()(最直观)

直接匹配字符串开头到第一个竖线之前的所有非竖线字符即可,无需复杂环视逻辑:

library(stringr)
# 示例向量
my_vector <- c("ABCC12|94160", "ABCC13|150000")
# 匹配逻辑:^代表字符串开头,[^|]+匹配1个及以上非|的字符
result <- str_extract(my_vector, "^[^|]+")

运行后result输出即为预期的"ABCC12" "ABCC13"。

方法2:使用stringr包的str_split()切割取首段

如果更习惯按分隔符拆分的思路,可以拆分后直接取第一个元素:

library(stringr)
my_vector <- c("ABCC12|94160", "ABCC13|150000")
# 按转义后的竖线拆分,simplify=T返回矩阵,直接取第一列即可
result <- str_split(my_vector, "\\|", simplify = T)[,1]

方法3:基础R实现(无需安装额外包)

用基础的sub()函数把第一个竖线及之后的所有内容替换为空即可:

my_vector <- c("ABCC12|94160", "ABCC13|150000")
result <- sub("\\|.*", "", my_vector)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:03