r语言 - 解析字符串 - 提取末尾的数字字符



解析 R 数据帧中的字符串字段对我来说恐怕有点神秘......将不胜感激。

我有一个字符串字段,它总是以不确定数量的数字字符结尾。我想写一些代码来提取每个末尾的数字部分。

数据格式的一个示例是:

df_test <- data.frame(my_string = c("XXX-0387", "XXXX-1-999999", "XXX 12345432", "XXX-2345", "XXX1234"))

我想要的是将末尾的数字部分放入一个新字段中,但保留任何前导零 - 所以大概新字段必须是 chr 而不是 int。所以我的输出看起来像:

c("0387", "999999", "12345432", "2345", "1234)

请问有没有简单的方法可以做到这一点?

谢谢。

一种使用sub捕获字符串的最后一部分(即数字(的方法。

sub('.*?(\d+)$', '\1', df_test$my_string)
#[1] "0387"     "999999"   "12345432" "2345"     "1234"  

使用stringr

stringr::str_extract(df_test$my_string, '\d+$')

您可以将regexpr\d+$一起使用,以查找末尾的数字并用regmatches提取。

regmatches(df_test$my_string, regexpr("\d+$", df_test$my_string))
#[1] "0387"     "999999"   "12345432" "2345"     "1234"    

我们可以使用stringi中的stri_extract_last

library(stringi)
stri_extract_last(df_test$my_string, regex = "\d+")
#[1] "0387"     "999999"   "12345432" "2345"     "1234"    

最新更新