@Greg Snow非常友好地向我介绍了使用正则表达式进行模式匹配。我使用他的建议执行以下操作:
sql <- "SELECT a, b, (q + r) AS c, (s + t) AS d FROM tbl WHERE x=y"
sql <- gsub("^.*SELECT *(.*?) +FROM.*$", "\\1", sql)
"a, b, (q + r) AS c, (s + t) AS d"
我很好奇并试图扩展此逻辑以替换“逗号之后的任何内容,包括'AS':
sql<- gsub(" \\(.*AS", "\\1", sql)
"a, b, d"
我希望它返回“a,b,c,d”。但是,我知道发生了什么 - 它在整个字符串中匹配我的模式,从 'b' 之后的逗号开始,并以第二个 AS 结束,而不是第一个。
我的问题是,如何在同一个字符串中多次匹配一个模式?我知道我的语法有问题。