我有这个字符串:
"MYDATA[, \"TYUO\"]"
Run Code Online (Sandbox Code Playgroud)
如何在引号之间提取文本?那么结果TYUO呢?
使用stringilookahead和lookbehind:
> stringi::stri_extract_all_regex(s, '(?<=").*?(?=")')
Run Code Online (Sandbox Code Playgroud)
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)
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |