如何在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
相关产品推荐
相关产品推荐

