从字符串中删除结尾的标点符号

时间:2019-11-08 20:05:48

标签: r regex

我试图删除出现在字符串末尾的所有破折号,并且我的代码导致R崩溃。任何可能导致此问题的调整或代码修复将不胜感激!

acct_nm = str_replace_all(acct_nm, "[:punct:]+", "")

不是,我将其包装为mutate的一部分,不幸的是,我无法显示我的所有代码或包含我的数据。基本上,我只希望它用acct_nm替换acct_nm变量-任何结尾的标点符号。

作为一个例子,我希望它的工作类似于下面的代码,其中变量y删除了所有尾随的标点符号。

library(tidyverse)
test <- data.frame(x = 1:3, y = 'hello-./') %>% 
         mutate(z = str_replace_all(y, "[:punct:]+", ""))

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以尝试使用sub / gsub并删除字符串末尾的标点符号

sub('[[:punct:]]+$', '', test$y)
#[1] "-hello" "-hello" "-hello"

数据

test <- data.frame(x = 1:3, y = '-hello-./')

答案 1 :(得分:0)

您可以尝试

df$z <- with(df,gsub("(.*?)[[:punct:]]+$","\\1",y))

使用给定的数据帧df <- data.frame(x = 1:3, y = 'hello-./'),您将得到

> df
  x        y     z
1 1 hello-./ hello
2 2 hello-./ hello
3 3 hello-./ hello