在R中是否可以在向量中搜索正则表达式,就好像所有元素都是折叠的单个元素一样?如果我们将所有元素折叠成一个来做这个,那么在搜索之后就不可能将它们放回到它们的元素形式.
这是一个向量.
vector<-c("I", "met", "a", "cow")
Run Code Online (Sandbox Code Playgroud)
现在,搜索词是"meta"(元素2和3折叠).
假设我的任务是合并搜索字符串所在的两个元素.
所以我期待的是:
vector = "I", "meta", "cow"
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?请帮忙.
如果您想要匹配"meta"但不匹配的东西"taco",这将解决问题:
myFun <- function(vector, word) {
D <- "UnLiKeLyStRiNg"
## Construct a string on which you'll perform regex-search
xx <- paste0(paste0(D, vector, collapse=""), D)
## Construct the regex pattern
start <- paste0("(?<=", D, ")")
mid <- paste0(strsplit(word, "")[[1]], collapse=paste0("(", D, ")?"))
end <- paste0("(?=", D, ")")
pat <- paste0(start, mid, end)
## Use it
strsplit(gsub(pat, word, xx, perl=TRUE), D)[[1]][-1]
}
vector <- c("I", "met", "a", "cow")
myFun(vector, "meta")
# [1] "I" "meta" "cow"
myFun(vector, "taco")
# [1] "I" "met" "a" "cow"
myFun(vector, "Imet")
# [1] "Imet" "a" "cow"
myFun(vector, "Ime")
# [1] "I" "met" "a" "cow"
Run Code Online (Sandbox Code Playgroud)