我有不同的字符向量包含"p.L86*"
,"p.A59fs*4"
,"p.E309*"
等字符串。每个字符都有不同的数字。我只想提取字符之间的第一个数字,所以预期的解决方案是86, 59, 309
。
我尝试gsub("[^0-9]+","","p.A59fs*4")
,但会保存所有数字......
答案 0 :(得分:5)
您可以使用sub
获取第一个匹配结果:
x <- c('p.L86*', 'p.A59fs*4', 'p.E309*')
sub('\\D*(\\d+).*', '\\1', x)
# [1] "86" "59" "309"
或回退到 stringi 包并改为匹配:
stri_extract_first_regex(x, '\\d+')
答案 1 :(得分:2)
尝试
library(stringr)
str_extract(v1, '(?<=[^0-9])\\d+(?=[^0-9])')
#[1] "86" "59" "309"
或使用sub
sub('^[^0-9]+([0-9]+).*', '\\1', v1)
v1 <- c("p.L86*", "p.A59fs*4", "p.E309*")