r - 按多个字符拆分字符串

标签 r character delimiter strsplit

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

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/

相关文章:

r - 为什么 @family 标签在 roxygen2 中的单词之间添加点?

java - 如何在java中将字符串中每个单词的第一个和最后一个字母大写

C:如何将用户输入限制为由空格分隔的 2 个参数?

r - 转换具有不同数量元素的嵌套数据框

r - 如何估计 Gamma 距离的形状和尺度。具有特定均值和 95% 分位数?

java - 使用 JCurses 从键盘读取而不按 "enter"

android - 如何在单个字符 Android 上添加图案颜色

php - 我应该如何分隔一串正则表达式?

R:删除空格 + 分隔符

javascript - R 中的 HighCharts 桑基图