如何从字符串末尾的字符串中提取单词?

时间:2019-10-15 04:47:38

标签: r string

注意:前面的问题改写为实际的问题。

# **Previous question:**

# How to extract words from a string beginning from the end of the string? 

str1 <- "then you must be in fact a wonderful kid"

# Desired answer for each command:

# "kid"
# "wonderful kid"                      
# "a wonderful kid"
# "fact a wonderful kid"

重新格式化的问题:

更具体:

如何从未知字符串中提取最后4个单词?

3 个答案:

答案 0 :(得分:2)

您可以将矢量化的substringrev一起使用,如下所示:

 rev(substring(str1,gregexpr("(?<= )",str1,perl=TRUE)[[1]],nchar(str1)))
[1] "kid"                                 "wonderful kid"                      
[3] "a wonderful kid"                     "fact a wonderful kid"               
[5] "in fact a wonderful kid"             "be in fact a wonderful kid"         
[7] "must be in fact a wonderful kid"     "you must be in fact a wonderful kid"

注意:更改最初使该回答过时的问题。这里的问题与之前的完全不同。您应该另外考虑每次提出不同的问题,而不要更改原始问题。

答案 1 :(得分:2)

使用stringr,我们可以将word与参数start = -4end = -1一起使用来提取句子的最后四个单词:

str1 <- "then you must be in fact a wonderful kid"

stringr::word(str1, start = -4, end = -1)
#> [1] "fact a wonderful kid"

答案 2 :(得分:0)

您可以使用sub 从字符串中提取最后4个单词,例如:

str1 <- "then you must be in fact a wonderful kid"
sub(".*(( *\\b\\w+){4})$", "\\1", str1)
#[1] "fact a wonderful kid"

在字符串少于4个单词的情况下也可以使用。

str1 <- "then you must"
sub(".*(( *\\b\\w+){4})$", "\\1", str1)
#[1] "then you must"