使用正则表达式(R)提取字符和数字混合的第一个实例

时间:2014-05-13 00:41:27

标签: regex r gsub

我有一个字符串,我想提取字符/数字混合的第一个实例 - 即下面屏幕分辨率的第一个实例。

要匹配的字符串

scrn <- "  dimensions:    1280x800 pixels (338x211 millimeters)"

我希望获得带有条目c(1280, 800)

的向量或列表

我可以用

做相当笨拙的事
strsplit(sapply(strsplit(scrn, " "), "[", 7),"x", scrn)

我通过查看7输出了解strsplit

但我假设有一个简洁的正则表达方式来做到这一点

我的尝试fwiw(我需要分开几次)

gsub("[[:alpha:]]{2,}|(\\:)*(\\s) ", "", scrn)

2 个答案:

答案 0 :(得分:1)

这是你的意思吗?

sub('scrn\\s*<-\\s*"\\s*dimensions:\\s*(\\d+)x(\\d+)', "c(\\1,\\2)", subject, perl=TRUE);

输出:

c(1280,800)

答案 1 :(得分:1)

在@ {zx81提示(\\d+)x(\\d+)之后,这可以相当整齐地完成

scrn <- "  dimensions:    1280x800 pixels (338x211 millimeters)"
g <- regexec("(\\d+)x(\\d+)",  scrn)
unlist(regmatches( scrn, g ))[-1]