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

如何用gsub与正则识别并移除连续管道符(保留特定场景管道符)

解决方案

首先构造测试数据框:

df <- structure(list(col1 = c(" |  |  |  |  |  |  |  |", "|  |  |  |  |  |  |  |  |  |  |  |  |  |             |", 
"|  |  |  |  |  |  |  |  |  |  |  |  |  |  | ", "stop|", "stop| | ", 
"stop | go")), class = "data.frame", row.names = c(NA, -6L))

使用以下正则表达式替换,可以精准满足需求:

df$col1 <- gsub("(?:^\\s*\\|\\s*)+|(?:\\s*\\|\\s*)+$|(?:\\s*\\|\\s*){2,}", "", df$col1, perl = TRUE)

正则说明:

  • (?:^\\s*\\|\\s*)+:匹配字符串开头所有由「任意空格+|+任意空格」组成的连续序列,删除这类无意义的开头分隔符
  • (?:\\s*\\|\\s*)+$:匹配字符串结尾所有由「任意空格+|+任意空格」组成的连续序列,删除行尾的无效分隔符
  • (?:\\s*\\|\\s*){2,}:匹配两个及以上连续的「任意空格+|+任意空格」序列,删除这类连续的无意义分隔符

执行后的数据框结果:

> df$col1
[1] ""          ""          ""          "stop"      "stop"      "stop | go"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:45:29