我真的怀疑你能用正则表达式做到这一点。你正在尝试parse你的字符串,所以你需要一个解析器,它通常比正则表达式更强大。我认为它不够通用,但是您可以利用 R 解析器和alist
班级。尝试:
res<-eval(parse(text=paste0("alist(",l,")")))
paste0(names(res),ifelse(names(res)!="","=",""),as.character(res))
#[1] "mod" "range1=seq(-m, n, 0.1)" "range2=seq(-2, 2, 0.1)"
#[4] "range3=seq(-2, 2, 0.1)"
请记住,如果存在嵌套括号,正则表达式建议的解决方案将失败。尝试一下它们和我的:
l<-"mod, range1 = seq(-m, n, 0.1), range2 = seq(-2, exp(2), 0.1), range3 = seq(-2, 2, 0.1)"
明白我的意思。