我有一个包含例如字符串不同的字符向量"p.L86*"
,"p.A59fs*4"
,"p.E309*"
等.每个有不同的位数.我只想提取字符之间的第一个数字,所以预期的解决方案就是86, 59, 309
.
我试过了gsub("[^0-9]+","","p.A59fs*4")
,但它会保存所有数字......
您可以使用sub
获取第一个匹配结果:
x <- c('p.L86*', 'p.A59fs*4', 'p.E309*')
sub('\\D*(\\d+).*', '\\1', x)
# [1] "86" "59" "309"
Run Code Online (Sandbox Code Playgroud)
或者回退到stringi包并匹配它们:
stri_extract_first_regex(x, '\\d+')
Run Code Online (Sandbox Code Playgroud)