使用正则表达式从字符串中提取信息

4

我有一个字符串:

s <- "test.test AS field1, ablh.blah AS field2, faslk.lsdf AS field3"

我想进行转换:

"field1, field2, field3"

我知道正则表达式(\w+)(?:,|$)可以提取我想要的字符串(如'field1,'),但我无法弄清如何使用gsub进行提取。
2个回答

10
## 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"

完美,这正是我想做的,只是我无法完全让它工作。 - Jeffrey Kramer
很高兴听到它有所帮助。干杯。 - Josh O'Brien

0

使用gsubfn包中的strapplyc,可以使用特别简单的正则表达式来提取跟随" AS "的每个单词字符字符串(如果字段可能包含非单词字符,则将\\w替换为适当的表达式,例如任何不是空格或逗号的字符:[^ ,]):

> library(gsubfn)
> strapplyc(s, " AS (\\w+)", simplify = toString)[[1]]
[1] "field1, field2, field3"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接