2

我有一个存储在 R 中的字符串。我可以使用什么代码来提取两个值之间的文本?例如:

sql <- "SELECT field1, field2, field3 FROM tbl WHERE x=y"

我想提取field1, field2, field3为单独的字符串。我可以使用substring,但我不清楚如何确定与“SELECT”结尾和“FROM”开头相关的整数值。

4

4 回答 4

5

这是使用的一种选择gsub

gsub("^.*SELECT *(.*?) +FROM.*$", "\\1", sql)
于 2013-08-20T17:43:27.690 回答
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"
于 2013-08-20T17:33:01.293 回答
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)))
于 2013-08-20T18:47:20.103 回答
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]

(当然这可以放入一个函数或合并到一行......)

于 2013-08-20T18:12:24.047 回答