拆分一个字符串,其中大写字母在stringr中跟随小写字母

efb*_*own 3 regex r stringr

我有一个看起来像这样的字符串向量,我想将它拆分:

str <- c("Fruit LoopsJalapeno Sandwich", "Red Bagel", "Basil LeafBarbeque SauceFried Beef")

str_split(str, '[a-z][A-Z]', n = 3)

[[1]]
[1] "Fruit Loop"       "alapeno Sandwich"

[[2]]
[1] "Red Bagel"

[[3]]
[1] "Basil Lea"    "arbeque Sauc" "ried Beef"
Run Code Online (Sandbox Code Playgroud)

但我需要将这些字母保留在最后和单词的开头.

Tyl*_*ker 5

这是基础中的两种方法(如果需要,可以概括为stringr).

这个用一个占位符将这个地方分开,然后拆分.

strsplit(gsub("([a-z])([A-Z])", "\\1SPLITHERE\\2", str), "SPLITHERE")

## [[1]]
## [1] "Fruit Loops"       "Jalapeno Sandwich"
## 
## [[2]]
## [1] "Red Bagel"
## 
## [[3]]
## [1] "Basil Leaf"     "Barbeque Sauce" "Fried Beef"  
Run Code Online (Sandbox Code Playgroud)

此方法使用前瞻和后观:

strsplit(str, "(?<=[a-z])(?=[A-Z])", perl=TRUE)

## [[1]]
## [1] "Fruit Loops"       "Jalapeno Sandwich"
## 
## [[2]]
## [1] "Red Bagel"
## 
## [[3]]
## [1] "Basil Leaf"     "Barbeque Sauce" "Fried Beef"  
Run Code Online (Sandbox Code Playgroud)

编辑广泛使用stringr, 这样你就可以获得3件作品

stringr::str_split(gsub("([a-z])([A-Z])", "\\1SPLITHERE\\2", str), "SPLITHERE", 3)
Run Code Online (Sandbox Code Playgroud)