我有一个字符串:
t="abc,mno,pqr,xyz,qwe,asd"
我希望所有可能的3个连续单词作为输出,如下所示:
"abc mno pqr,mno pqr xyz,pqr xyz qwe,xyz qwe asd"
我正在使用R,所以要使用perl正则表达式引擎。
有什么想法吗?
感谢。
答案 0 :(得分:6)
好的我自己弄清楚了,
t="abc,mno,pqr,xyz,qwe,asd"
t=gsub("(?=,([^,]*),([^,]*))", " \\1 \\2", t, perl=T)
t=gsub("(,[^,]*,[^,]*)$", "", t, perl=T)
t
"abc mno pqr,mno pqr xyz,pqr xyz qwe,xyz qwe asd"
答案 1 :(得分:3)
这是一个非正则表达式的解决方案
t <- "abc,mno,pqr,xyz,qwe,asd"
library(zoo)
paste(rollapply(strsplit(t, ",")[[1]], width = 3, FUN = paste, collapse = " "), collapse = ",")
## [1] "abc mno pqr,mno pqr xyz,pqr xyz qwe,xyz qwe asd"
答案 2 :(得分:1)
另一种gsub方法,
> t="abc,mno,pqr,xyz,qwe,asd"
> m <- gsub("(?=,([^,]+),([^,]+)\\b(?!$))", " \\1 \\2", t, perl=TRUE)
> result <- gsub(",(?=(?:[^,]*,)?[^,]*$)", " ", m, perl=TRUE)
> result
[1] "abc mno pqr,mno pqr xyz,pqr xyz qwe,xyz qwe asd"