尝试使用StringR查找出现在文本末尾的所有数字。
例如
x <- c("Africa-123-Ghana-2", "Oceania-123-Sydney-200")
和StringR操作应返回
"2 200"
我相信可能有多种方法,但是最好的代码是什么?
谢谢。
答案 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"
或将stringr
与str_match
一起使用
library(stringr)
str_match(x, "(\\d+)$")[,1]
#[1] "2" "200"
或与str_remove
str_remove(x, ".*\\D+")
#[1] "2" "200"