从R中的格式字符串中提取数字

Mac*_*nos 2 string r

假设我有一堆以下格式给出的字符串:#%d-%d-%d.

例如,

#50-69-1
#49-69-2
...
Run Code Online (Sandbox Code Playgroud)

如何在没有暴力逼近的情况下为每个字符串提取第一个数字?

对于上面的例子我想得到:

50
49
...
Run Code Online (Sandbox Code Playgroud)

akr*_*run 6

尝试

sub('^#(\\d+)-.*', '\\1', str1)
#[1] "50" "49"
Run Code Online (Sandbox Code Playgroud)

数据

str1 <- c('#50-69-1', '#49-69-2')
Run Code Online (Sandbox Code Playgroud)


Avi*_*Raj 5

你可以使用stri_extract功能.

> library(stringi)
> x <- "#50-69-1"
> stri_extract(x, regex="\\d+")
[1] "50"
> regmatches(x, regexpr("\\d+", x))
[1] "50"
Run Code Online (Sandbox Code Playgroud)

要么

> gsub("^\\D*|-.*", "", "#49-69-1")
[1] "49"
> gsub("^#|-.*", "", "#49-69-1")
[1] "49"
Run Code Online (Sandbox Code Playgroud)