如何获得以每个字符串r中的某些字符结尾的单词

时间:2014-08-25 11:51:57

标签: r regex string gsub

我有一个字符串向量,如下所示:

str <- c("bills slashed for poor families today", "your calls are charged", "complaints dept awaiting refund")

我希望得到所有以字母s结尾的字词并删除s。我试过了:

gsub("s$","",str)

但它不起作用,因为它试图匹配以s而不是单词结尾的字符串。我正在尝试获得一个看起来像的输出:

[1] bill slashed for poor familie today
[2] your call are charged
[3] complaint dept awaiting refund

关于我如何做到这一点的任何指示?感谢

3 个答案:

答案 0 :(得分:7)

$检查字符串的结尾,而不是单词的结尾。

要检查单词边界,您应该使用\b

所以:

gsub("s\\b", "", str)

答案 1 :(得分:0)

你也可以使用积极的先行断言:

gsub(pattern = "s{1}(?>\\s)", " ", x = str, perl = T)

我不是正则表达式的专家,但我相信这个表达式会寻找&#34; s&#34;如果后跟一个空格。找到一个匹配,它取代了&#34; s&#34;有空间。所以,最后的&#34; s&#34;被删除。

答案 2 :(得分:0)

这是一个非基础的R解决方案:

library(rebus)
library(stringr)

plurals <- "s" %R% BOUNDARY
str_replace_all(str, pattern = plurals, replacement = "")