r - 如何使用gsub和regex来识别和删除连续的符号?

标签 r regex gsub

我有一列包含这样的值:

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

我希望能够删除 | 的所有迭代,当它们连续出现时,或者如果它们显示为 | || | |

目前,我正在尝试找出管道的所有迭代,但它们似乎有点随机。我想知道是否有办法确保我的迭代涵盖以下实例:

  1. 当连续出现多个|
  2. 当有多个 | 连续且有多个空格时(例如,| || | |
  3. | 位于行尾时(例如,\\|$

但是,我会在 stop | 之间保留管道去

这是我现在正在使用的代码,但它删除了 stop | 中的管道去

df$col1 <- gsub('[\\| ]{2,}|[\\|$]', '', df$col1)

我想删除所有 | 符号,除了 stop | 中的符号去

最佳答案

也许这行得通

trimws(trimws(gsub('(\\|\\s+){2,}', "", df$col1),
 whitespace = "\\s+\\|"), whitespace = "\\|")

-输出

[1] ""          ""          ""          "stop"      "stop"      "stop | go"

关于r - 如何使用gsub和regex来识别和删除连续的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74522765/

相关文章:

regex - 在正则表达式中,神秘错误 : assertion 'tree->num_tags == num_tags' failed in executing regexp: file 'tre-compile.c' , 第 634 行

ruby - 使用 gsub 在字符之间插入空格 - Ruby

r - 将被n个零分隔的向量分成不同的组

r - 如果满足条件,则更新下一行的值

javascript - googleVis 中标签的悬停样式

c# - 从 C# 字符串中提取模式并使用它创建变量的最佳做法是什么

python - 使用正则表达式从文本文件中提取数字

r - 安装 dplyr 给了我旧版本

regex - 正则表达式:txt vs tx?

regex - 在第一个冒号处分割字符串