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

R语言如何提取字符串中|分隔符之前的子串内容

问题原因

|是正则表达式的特殊元字符,代表“或”匹配逻辑,你直接写在匹配模式里没有转义,因此"|.*"会被解析为「匹配空值 或 匹配任意长度字符」,执行替换后自然和原字符串没有差异。

解决方法

你只需要对|做转义处理即可,R的正则语法中需要用双反斜杠转义元字符,以下是几种可行的写法:

  1. 调整你原来的str_replace写法
# 基础写法,直接替换|及之后的所有内容
s <- st %>% str_replace("\\|.*", "")
# 优化写法:连带删除|前面的多余空格,输出结果更规整
s <- st %>% str_replace("\\s*\\|.*", "")
  1. 用字符串分割方法实现,无需处理正则替换逻辑
# 按|分割为2段,取第一段再去除首尾空格
s <- st %>% 
  str_split("\\|", n = 2, simplify = TRUE) %>% 
  .[, 1] %>% 
  str_trim()
  1. 基础R实现,无需加载tidyverse包
s <- sub("\\s*\\|.*", "", st)

以上任意一种方法执行后,都可以得到你预期的输出结果:

"Samsung Galaxy M21 2021 Edition (Charcoal black , 6GB RAM, 128GB Storage)"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:45:03