我有一个字符串向量,如下所示:
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
关于我如何做到这一点的任何指示?感谢
答案 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 = "")