我有一个a像这样的字符串:
stundenwerte_FF_00691_19260101_20131231_hist.zip
并希望从中提取5位数字"00691".
我尝试使用gregexpr和regmatches以及stringr::str_extract
但无法确定正确的rexexp.我来到:
gregexpr( "[:数字{5}:]",一个)
哪个应该返回5位数字,我不明白如何解决它.
这不适当地工作:(
m <- gregexpr("[:digits{5}:]",a)
regmatches(a,m)
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
hwn*_*wnd 10
你可以简单地sub用来抓取数字,regmatches这个简单的情况下不需要IMO .
x <- 'stundenwerte_FF_00691_19260101_20131231_hist.zip'
sub('\\D*(\\d{5}).*', '\\1', x)
# [1] "00691"
Run Code Online (Sandbox Code Playgroud)
编辑:如果您有其他字符串包含前面的数字,您将略微修改表达式.
sub('.*_(\\d{5})_.*', '\\1', x)
Run Code Online (Sandbox Code Playgroud)
1)子
sub(".*_(\\d{5})_.*", "\\1", x)
## [1] "00691"
Run Code Online (Sandbox Code Playgroud)
2)gsubfn :: strapplyc 如果我们使用strapplyc以下内容,可以略微简化正则表达式:
library(gsubfn)
strapplyc(x, "_(\\d{5})_", simplify = TRUE)
## [1] "00691"
Run Code Online (Sandbox Code Playgroud)
3)strsplit 如果我们知道它是第三个字段:
read.table(text = x, sep = "_", colClasses = "character")$V3
## [1] "00691"
Run Code Online (Sandbox Code Playgroud)
3a)或
strsplit(x, "_")[[1]][3]
## [1] "00691"
Run Code Online (Sandbox Code Playgroud)