34

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

句子不以“。”结尾。单词用空格隔开。

sentence <- "The quick brown fox"
TheFunction(sentence)

应该返回:“狐狸”

如果一个简单的解决方案是可能的,我不想使用一个包。如果存在基于包的简单解决方案,那也可以。

4

5 回答 5

61

只是为了完整性:库stringr包含一个正好解决这个问题的函数。

library(stringr)

sentence <- "The quick brown fox"
word(sentence,-1)
[1] "fox"
于 2013-09-21T13:30:20.160 回答
27
tail(strsplit('this is a sentence',split=" ")[[1]],1)

基本上正如@Señor O 所建议的那样。

于 2013-07-15T15:55:52.743 回答
15
x <- 'The quick brown fox'
sub('^.* ([[:alnum:]]+)$', '\\1', x)

这将在字符串结束之前捕获最后一个数字和字符字符串。

您也可以使用regexecandregmatches函数,但我觉得sub更简洁:

m <- regexec('^.* ([[:alnum:]]+)$', x)
regmatches(x, m)

请参阅?regex?sub了解更多信息。

于 2013-07-15T15:51:26.570 回答
13

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

library(stringi)

stri_extract_last_words("The quick brown fox")
# [1] "fox"

该功能还删除了可能位于句子末尾的任何标点符号。

stri_extract_last_words("The quick brown fox? ...")
# [1] "fox"
于 2015-01-20T20:34:34.413 回答
5

朝着包装方向前进,这是我能想到的最简单的答案:

library(stringr)

x <- 'The quick brown fox'
str_extract(x, '\\w+$')
#[1] "fox"
于 2013-07-15T17:32:05.263 回答