如何在R中提取字符之间的数字

Xu *_*ing 6 regex r

我有一个包含例如字符串不同的字符向量"p.L86*","p.A59fs*4","p.E309*"等.每个有不同的位数.我只想提取字符之间的第一个数字,所以预期的解决方案就是86, 59, 309.

我试过了gsub("[^0-9]+","","p.A59fs*4"),但它会保存所有数字......

hwn*_*wnd 5

您可以使用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)