首页 > 解决方案 > 按多个字符拆分字符串

问题描述

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

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

结果应该是:

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

有什么想法strsplit吗?

标签: rcharacterdelimiterstrsplit

解决方案


我们可以使用strsplit以下模式在此处使用环视:

(?<=we|is|24)|(?<=.)(?=we|iu|24)

上述正则表达式的基本思想是,只要在当前位置,awe|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"               

演示


推荐阅读