如何在转义引号之间提取此字符串的部分?

时间:2014-08-21 17:20:22

标签: regex r

我想从此字符串中提取引用的名称(deparse()调用的结果。)

tstStr <- "!is.na(neb[[\"ba\"]]) & neb[[\"ba\"]] >= targ[[\"ba\"]] & neb[[\"ht\"]] >= 0"

因此,结果将是c("ba","ba","ba","ht")。我已尝试使用gsubgrep进行各种操作,但无法获得我想要的内容。

3 个答案:

答案 0 :(得分:5)

以下是我使用的内容:

m <- gregexpr(pattern = '".*?"', tstStr)
gsub('"', '', regmatches(tstStr, m)[[1]])
# [1] "ba" "ba" "ba" "ht"

答案 1 :(得分:1)

或者

library(stringr)
str_extract_all(tstStr, perl('(?<=")[A-Za-z]+'))[[1]]
#[1] "ba" "ba" "ba" "ht"

答案 2 :(得分:0)

qdapRegex函数rm_between可以在此处运行。 rm_between提取或删除左右边界之间的内容:

tstStr <- "!is.na(neb[[\"ba\"]]) & neb[[\"ba\"]] >= targ[[\"ba\"]] & neb[[\"ht\"]] >= 0"

library(qdapRegex)

rm_between(tstStr, left='[["', right='"]]', extract=TRUE)


## [[1]]
## [1] "ba" "ba" "ba" "ht"