2015-08-31 3 views
-3

У меня есть эта строка:Как извлечь текст между котировками в R

"MYDATA[, \"TYUO\"]" 

Как извлечь текст между кавычками? Итак, результат всего TYUO?

+5

Что-то вроде '' подразделов, может быть, или для более хорошей печати 'кота (суб ('. * "(. *)". *', "\\ 1", x)) ' –

+0

Как насчет регулярного выражения? – user3022875

+5

Это регулярное выражение, нет? – Frank

ответ

5

Использование stringi с опережающим просмотром и просмотром назад:

> stringi::stri_extract_all_regex(s, '(?<=").*?(?=")') 
4

qdapRegex «s (я в соавторство этого пакета с Джейсоном Греем акой @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" 

EDIT

@BenBolker попросил базу R. Это не так хорошо, как я надеялся, но будет сделать это в базе R:

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

## [[1]] 
## [1] "TYUO" 
## 
## [[2]] 
## [1] "second" "multiple" 

мне не нравится вырежут ведущие завершающие кавычки с lapplygsub но попробовать использовать стандартный предпросмотр/просмотр назад результат не то, что мы хотим: ('* "(*)." *'., "\\ 1", х)

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

## [[1]] 
## [1] "TYUO" 
## 
## [[2]] 
## [1] "second" " with " "multiple" 
Смежные вопросы