我想使用单个正则表达式从字符串中提取几条数据。我制作了一个模式,其中包括这些片段作为括号中的子表达式。在类似 perl 的环境中,我只需通过代码等将这些子表达式传递给变量myvar1=$1; myvar2=$2;
- 但是如何在 R 中做到这一点?目前,我发现访问这些事件的唯一方法是通过 regexec。这不是很方便,因为 regexec 不支持 perl 语法和其他原因。这就是我现在必须做的:
getoccurence <- function(text,rex,n) { # rex is the result of regexec function
occstart <- rex[[1]][n+1]
occstop <- occstart+attr(rex[[1]],'match.length')[n+1]-1
occtext <- substr(text,occstart[i],occstop)
return(occtext)
}
mytext <- "junk text, 12.3456, -01.234, valuable text before comma, all the rest"
mypattern <- "([0-9]+\\.[0-9]+), (-?[0-9]+\\.[0-9]+), (.*),"
rez <- regexec(mypattern, mytext)
var1 <- getoccurence(mytext, rez, 1)
var2 <- getoccurence(mytext, rez, 2)
var3 <- getoccurence(mytext, rez, 3)
显然,这是一个相当笨拙的解决方案,应该有更好的东西。我会很感激任何建议。