正则表达式在某个字符串后提取数字

时间:2014-03-17 22:12:19

标签: regex string r

我如何在R中提取始终位于字符串-{any single letter}之后的数字,例如来自向量:

c("JFSDLKJ-H465", "FJSLKJHSD-Y5FSDLKJ", "DFSJLKJAAA-Z3216FJJ")

应该得到:

(465, 5, 3216).

-{any single letter}模式只出现一次。

3 个答案:

答案 0 :(得分:2)

您可以使用gsub,例如:

x <- c("JFSDLKJ-H465", "FJSLKJHSD-Y5FSDLKJ", "DFSJLKJAAA-Z3216FJJ")
as.numeric(gsub("^.*-[A-Z]+([0-9]+).*$", "\\1", x))
# [1]  465    5 3216

答案 1 :(得分:1)

library(stringr)
v <- c("JFSDLKJ-H465", "FJSLKJHSD-Y5FSDLKJ", "DFSJLKJAAA-Z3216FJJ")
as.numeric(sapply(str_match_all(v, "\\-[a-zA-Z]([0-9]+)"),"[")[2,])
## [1]  465    5 3216

答案 2 :(得分:1)

> x <- c("JFSDLKJ-H465", "FJSLKJHSD-Y5FSDLKJ", "DFSJLKJAAA-Z3216FJJ")
> as.numeric(gsub("[A-Z]|-", "", x))
## [1]  465    5 3216