提取句子字符串中最后一个单词的最优雅的方法是什么?
句子不以“。”结尾。单词用空格隔开。
sentence <- "The quick brown fox"
TheFunction(sentence)
应该返回:“狐狸”
如果一个简单的解决方案是可能的,我不想使用一个包。如果存在基于包的简单解决方案,那也可以。
提取句子字符串中最后一个单词的最优雅的方法是什么?
句子不以“。”结尾。单词用空格隔开。
sentence <- "The quick brown fox"
TheFunction(sentence)
应该返回:“狐狸”
如果一个简单的解决方案是可能的,我不想使用一个包。如果存在基于包的简单解决方案,那也可以。
只是为了完整性:库stringr包含一个正好解决这个问题的函数。
library(stringr)
sentence <- "The quick brown fox"
word(sentence,-1)
[1] "fox"
tail(strsplit('this is a sentence',split=" ")[[1]],1)
基本上正如@Señor O 所建议的那样。
x <- 'The quick brown fox'
sub('^.* ([[:alnum:]]+)$', '\\1', x)
这将在字符串结束之前捕获最后一个数字和字符字符串。
您也可以使用regexec
andregmatches
函数,但我觉得sub
更简洁:
m <- regexec('^.* ([[:alnum:]]+)$', x)
regmatches(x, m)
请参阅?regex
和?sub
了解更多信息。
另一个打包选项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"
朝着包装方向前进,这是我能想到的最简单的答案:
library(stringr)
x <- 'The quick brown fox'
str_extract(x, '\\w+$')
#[1] "fox"