我有一个存储在R中的字符串。我可以使用哪些代码在两个值之间提取文本?例如:
sql <- "SELECT field1, field2, field3 FROM tbl WHERE x=y"
我想将field1, field2, field3
提取为单独的字符串。我可以使用substring
但我不清楚如何确定与“SELECT”结尾和“FROM”开头相关的整数值。
答案 0 :(得分:5)
以下是使用gsub
的一个选项:
gsub("^.*SELECT *(.*?) +FROM.*$", "\\1", sql)
答案 1 :(得分:1)
你可以这样做:
split_sql = strsplit(sql, split = " ")
result = paste(split_sql[1][[2]], split_sql[1][[3]], split_sql[1][[4]], sep = " ")
这会给你:
#[1] "field1, field2, field3"
答案 2 :(得分:0)
我的偏好是:
# Pull out strings between SELECT and FROM
Fields = gsub("SELECT (.*) FROM.*","\\1",sql)
# Remove spaces
CleanFields = (gsub("\\s+", "", Fields))
# Split into items
Items = unlist(strsplit(CleanFields,","))
然后,您可以将每个field1索引为Items [1]
(当然这可以放入一个函数或组合成一行......)
答案 3 :(得分:0)
1)一种方法是删除所有不需要的东西:
gsub("^SELECT *| FROM .*", "", sql)
2)如果我们有一个带有必填字段的数据框,另一种方法是使用sqldf运行查询,然后取名字:
library(sqldf)
tbl <- data.frame(field1 = 1, field2 = 2, field3 = 3, x = 4, y = 5)
toString(names(sqldf(sql)))