在R中提取字符串中的最后一个单词

use*_*503 25 r

提取句子字符串中最后一个单词的最优雅方法是什么?

句子不以"."结尾.单词由空格分隔.

sentence <- "The quick brown fox"
TheFunction(sentence)
Run Code Online (Sandbox Code Playgroud)

应该回归:"狐狸"

如果可以使用简单的解决方案,我不想使用包.如果存在基于包的简单解决方案,那也没关系.

leo*_*leo 44

只是为了完整性:库字符串包含一个完全解决此问题的函数.

library(stringr)

sentence <- "The quick brown fox"
word(sentence,-1)
[1] "fox"
Run Code Online (Sandbox Code Playgroud)


Rol*_*and 23

tail(strsplit('this is a sentence',split=" ")[[1]],1)
Run Code Online (Sandbox Code Playgroud)

基本上是@SeñorO所建议的.


Jus*_*tin 12

x <- 'The quick brown fox'
sub('^.* ([[:alnum:]]+)$', '\\1', x)
Run Code Online (Sandbox Code Playgroud)

这将捕获字符串之前的最后一串数字和字符.

你也可以使用regexecregmatches函数,但我发现sub更干净:

m <- regexec('^.* ([[:alnum:]]+)$', x)
regmatches(x, m)
Run Code Online (Sandbox Code Playgroud)

?regex?sub获取更多信息.


Ric*_*ven 12

另一个打包选项stri_extract_last_words()来自stringi

library(stringi)

stri_extract_last_words("The quick brown fox")
# [1] "fox"
Run Code Online (Sandbox Code Playgroud)

该函数还删除可能在句子末尾的任何标点符号.

stri_extract_last_words("The quick brown fox? ...")
# [1] "fox"
Run Code Online (Sandbox Code Playgroud)


edd*_*ddi 5

顺便提一下,这是我能想到的最简单的答案:

library(stringr)

x <- 'The quick brown fox'
str_extract(x, '\\w+$')
#[1] "fox"
Run Code Online (Sandbox Code Playgroud)