【问题标题】:R: gsub punctuation characters only at the end of the stringR:gsub 标点字符仅在字符串末尾
【发布时间】:2016-11-24 08:24:43
【问题描述】:

我有像 'aa;a' 'aa;' 这样的字符串我需要删除';' (或任何其他标点符号)仅当字符串以它结尾时。如果它以它开头或包含在中间,我不想删除它。

下面的行导致';'被删除

gsub("(^.*)[[:punct:]]","",'a;a')

【问题讨论】:

  • 只是为了清除一些东西,a;a; 的结果将是 aaa;a 的结果将是 a;a

标签: r regex gsub


【解决方案1】:

我们可以在[[:punct:]]之后指定元字符$来表示字符串的结尾,这样它就可以匹配字符串末尾的标点符号并替换为空白(""

sub("[[:punct:]]$","",c('a;a', 'aa;'))
#[1] "a;a" "aa" 

请注意,sub 仅用于匹配和替换单个实例,而不是 gsub(全局替换)。

【讨论】: