使用Stringr查找文本中的最后一位数字

时间:2019-06-25 03:17:48

标签: r stringr

尝试使用StringR查找出现在文本末尾的所有数字。

例如

x <- c("Africa-123-Ghana-2", "Oceania-123-Sydney-200")

和StringR操作应返回

"2  200"

我相信可能有多种方法,但是最好的代码是什么?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用

sub(".*-(\\d+)$", "\\1", x)
#[1] "2"   "200"

stringr::str_extract(x, "\\d+$")

stringi::stri_extract_last_regex(x, "\\d+")

答案 1 :(得分:0)

我们可以在regexpr/regmatches中使用base R来匹配字符串末尾(\\d+)的一个或多个数字($

regmatches(x, regexpr("\\d+$", x))
#[1] "2"   "200"

或者使用sub,我们将字符匹配到最后一个不是数字的字符,并用空格("")替换

sub(".*\\D+", "", x)
#[1] "2"   "200"

或使用strsplit

sapply(strsplit(x, "-"), tail, 1)
#[1] "2"   "200"

或将stringrstr_match一起使用

library(stringr)
str_match(x, "(\\d+)$")[,1]
#[1] "2"   "200"

或与str_remove

str_remove(x, ".*\\D+")
#[1] "2"   "200"