用多个字符分割字符串

tob*_*sch 3 r character delimiter strsplit

我想通过向量中定义的多个分隔符来分割字符:

text1   <- "aweoiutw839572/)(&2aslk2468" 
text2   <- "147we547iu5erhg24tzu" 
dat <-  rbind(text1, text2)
vector <- c("we", "iu", "24")
Run Code Online (Sandbox Code Playgroud)

结果应该是:

var1 del1 var2 del2  var3                del3 var4
a    we   o    iu    tw839572/)(&2aslk   24   68
147  we   547  iu    5erhg               24   tzu
Run Code Online (Sandbox Code Playgroud)

strsplit什么想法吗?

Tim*_*sen 5

我们可以使用strsplit以下模式在这里使用lookarounds:

(?<=we|is|24)|(?<=.)(?=we|iu|24)
Run Code Online (Sandbox Code Playgroud)

上述正则表达式的基本思想是,无论何时,在当前位置,we|is|24先于或继续,都应该发生分裂.值得注意的是(?<=.)外部交替左侧的额外外观.这是必要的,因为R实现了前瞻性的方式strsplit. 有关详细信息,请参见此处.

text1 <- "aweoiutw839572/)(&2aslk2468"
vector <- c("we", "iu", "24")
terms <- paste0(vector, collapse="|")
regex <- paste0("(?<=", terms, ")|(?<=.)(?=", terms, ")")

strsplit(text1, regex, perl=TRUE)

[[1]]
[1] "a"                 "we"                "o"                
[4] "iu"                "tw839572/)(&2aslk" "24"               
[7] "68"               
Run Code Online (Sandbox Code Playgroud)

演示