如何捕捉句子中的最后一个数字?

时间:2019-05-02 14:51:25

标签: r

例如:

“我想得到10个苹果,99个香蕉和86个橙子。”

“我想买车”

我想做的是获取句子中的最后一个数字。 我希望的结果是:

86

不适用

如何使用R使其成为可能? 谢谢〜

p.s。我只想捕捉阿拉伯数字

2 个答案:

答案 0 :(得分:5)

使用pass,我们可以使用stringi,它将返回字符串中的最后一个匹配模式。

stri_extract_last_regex

数据

as.numeric(stringi::stri_extract_last_regex(x, "\\d+"))
#[1] 86 NA

答案 1 :(得分:3)

我们可以使用str_extract中的stringr,它也是基于tidyverse

library(stringr)
as.numeric(sapply(str_extract_all(str1, "\\d+"), tail, 1))
#[1] 86 NA

或者仅使用base R

as.numeric(sub(".* (\\d+).*", "\\1", str1))
#[1] 86 NA

如果它是data.frame,我们提取列并更新列

df1$col1 <- as.numeric(sapply(str_extract_all(df1$col1, "\\d+"), tail, 1))

此外,我们可以从此link

中找到更多资源

数据

str1 <- c("I want to get 10 apples, 99 bananas and 86 oranges.",
    "I want to buy a car")