在R中最后拆分一个带有数字的字符串

Sas*_*sha 3 regex split r

如何将包含数字(未知位数)的字符串拆分为两个字符串 - 数字和字符串的其余部分.请注意,字符串中可能存在其他不应受影响的数字.例如:

"abc665abc12"   -> "abc665abc", "12"
"abc665abc 182" -> "abc665abc", "182"
"abc665abc0"    -> "abc665abc", "0"
Run Code Online (Sandbox Code Playgroud)

谢谢!

Avi*_*Raj 8

你也可以使用 strsplit

> x = c("abc665abc12", "abc665abc 182", "abc665abc0")
> strsplit(x, "(?<=[A-Za-z])\\s*(?=\\d+$)", perl = TRUE)
[[1]]
[1] "abc665abc" "12"       

[[2]]
[1] "abc665abc" "182"      

[[3]]
[1] "abc665abc" "0"  
Run Code Online (Sandbox Code Playgroud)


Fra*_*ank 5

这有效:

# op's example
x = c("abc665abc12", "abc665abc 182", "abc665abc0")

library(stringi)
res = stri_match_first_regex(x, "^(.*?) ?([0-9]+)$")


     [,1]            [,2]        [,3] 
[1,] "abc665abc12"   "abc665abc" "12" 
[2,] "abc665abc 182" "abc665abc" "182"
[3,] "abc665abc0"    "abc665abc" "0"  
Run Code Online (Sandbox Code Playgroud)

您想要的部分位于第2和第3列,对应于正则表达式中的括号.