我想通过向量中定义的多个分隔符来分割一个字符:
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
有什么想法吗?
最佳答案
我们可以使用 strsplit
这里使用以下模式进行环视:
(?<=we|is|24)|(?<=.)(?=we|iu|24)
上述正则表达式的基本思想是,只要在当前位置,we|is|24
就应该发生拆分。先于或进行。值得注意的是额外的后视 (?<=.)
在外部交替的左侧。这是必需的,因为 R 在 strsplit
中实现前瞻的方式有一个怪癖。 . See here了解更多信息。
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"
Demo
关于r - 按多个字符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51415578/