如何在R中引用之间提取文本

use*_*875 -2 regex r

我有这个字符串:

"MYDATA[, \"TYUO\"]"
Run Code Online (Sandbox Code Playgroud)

如何在引号之间提取文本?那么结果TYUO呢?

zer*_*323 6

使用stringilookahead和lookbehind:

> stringi::stri_extract_all_regex(s, '(?<=").*?(?=")')
Run Code Online (Sandbox Code Playgroud)


Tyl*_*ker 5

qdapRegex(我与Jason Gray同名的@hwnd合着这个包)rm_between功能就是为此而生的:

x <- c("MYDATA[, \"TYUO\"]", 'a "second" with "multiple" quotes')

library(qdapRegex)
rm_between(x, '"', '"', extract=TRUE)

## [[1]]
## [1] "TYUO"
## 
## [[2]]
## [1] "second"   "multiple"
Run Code Online (Sandbox Code Playgroud)

编辑

@BenBolker要求提供基础R解决方案.这不像我希望的那样漂亮,但会在基地R完成它:

lapply(regmatches(x, gregexpr('(\").*?(\")', x, perl = TRUE)), function(y) gsub("^\"|\"$", "", y))

## [[1]]
## [1] "TYUO"
## 
## [[2]]
## [1] "second"   "multiple"
Run Code Online (Sandbox Code Playgroud)

我不喜欢用a去除前导引号,lapply gsub但试着使用标准的lookahead/lookbehind结果不是我们想要的:

regmatches(x, gregexpr("(?<=\")(.*?)(?=\")", x, perl = TRUE))

## [[1]]
## [1] "TYUO"
## 
## [[2]]
## [1] "second"   " with "   "multiple"
Run Code Online (Sandbox Code Playgroud)