Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 拆分stringr中大写字母紧跟小写字母的字符串_Regex_R_Stringr - Fatal编程技术网

Regex 拆分stringr中大写字母紧跟小写字母的字符串

Regex 拆分stringr中大写字母紧跟小写字母的字符串,regex,r,stringr,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

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

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"

str这里是base中的两种方法(如果需要,您可以推广到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"  
此方法使用lookaheads和lookbehinds:

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"  

您还可以根据字符串进行匹配,而不是拆分

unlist(regmatches(str, gregexpr('[A-Z][a-z]+ [A-Z][a-z]+', str)))
# [1] "Fruit Loops"       "Jalapeno Sandwich" "Red Bagel"        
# [4] "Basil Leaf"        "Barbeque Sauce"    "Fried Beef" 

不错,可能更高效+1
unlist(regmatches(str, gregexpr('[A-Z][a-z]+ [A-Z][a-z]+', str)))
# [1] "Fruit Loops"       "Jalapeno Sandwich" "Red Bagel"        
# [4] "Basil Leaf"        "Barbeque Sauce"    "Fried Beef"