gpt4 book ai didi

regex - 使用 gsub 删除多个逗号和尾随逗号

转载 作者:行者123 更新时间:2023-12-04 22:12:32 27 4
gpt4 key购买 nike

这个问题与Removing multiple spaces and trailing spaces using gsub非常相似,除了我想将它应用于逗号而不是空格。

例如,我想要一个函数 TrimCommasx进入 y :

x <- c("a,b,c", ",a,b,,c", ",,,a,,,b,c,,,")
# y <- TrimCommas(x) # presumably
y <- c("a,b,c", "a,b,c", "a,b,c")

空格的解决方案是 gsub("^ *|(?<= ) | *$", "", x, perl=T) ,所以我希望比较这个解决方案也有助于解释一些正则表达式的基本原理。

最佳答案

解决方案不是很相似吗?

x <- c("a,b,c", ",a,b,,c", ",,,a,,,b,c,,,")
gsub("^,*|(?<=,),|,*$", "", x, perl=T)
# [1] "a,b,c" "a,b,c" "a,b,c"

正则表达式分为三部分 ^,*|(?<=,),|,*$ :
  • ^,* -- 这匹配字符串开头的 0 个或多个逗号
  • (?<=,), -- 这是一个 positive lookbehind查看逗号后面是否有逗号,所以它匹配 ,,,
  • ,*$ -- 匹配字符串末尾的 0 个或多个逗号

  • 如您所见,以上所有内容都没有被替换。

    您可以使用此函数将其泛型到任何字符( " ""," 等):
    TrimMult <- function(x, char=" ") {
    return(gsub(paste0("^", char, "*|(?<=", char, ")", char, "|", char, "*$"),
    "", x, perl=T))
    }

    关于regex - 使用 gsub 删除多个逗号和尾随逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274035/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com