我有一个字符串:
s <- "test.test AS field1, ablh.blah AS field2, faslk.lsdf AS field3"
我想进行转换:
"field1, field2, field3"
我知道正则表达式
(\w+)(?:,|$)
可以提取我想要的字符串(如'field1,'),但我无法弄清如何使用gsub
进行提取。## Preparation
s <- "test.test AS field1, ablh.blah AS field2, faslk.lsdf AS field3"
pat <- "(\\w+)(?:,|$)" ## Note the doubly-escaped \\w
## Use the powerful gregexpr/regmatches one-two punch
m <- gregexpr(pat, s)
paste(regmatches(s, m)[[1]], collapse=" ")
# [1] "field1, field2, field3"
使用gsubfn包中的strapplyc
,可以使用特别简单的正则表达式来提取跟随" AS "
的每个单词字符字符串(如果字段可能包含非单词字符,则将\\w
替换为适当的表达式,例如任何不是空格或逗号的字符:[^ ,]
):
> library(gsubfn)
> strapplyc(s, " AS (\\w+)", simplify = toString)[[1]]
[1] "field1, field2, field3"