strsplit 在冒号之前的第一个逗号

问题描述 投票:0回答:1

我绞尽脑汁,还没想出好的解决办法。

我有以下向量,我打算在 R 中拆分:

x <- c("Sara: has brown hair, Mary Jane: is, mostly, regarded as intelligent, Marc-Oliver: big,handsome","Elvis: loud, dead, Ray Charles: silent, dead, Rihanna: alive")

对于上下文:冒号后面的单词是冒号之前单词的进一步精确。因此,Sara、Mary Jane、Marc-Oliver、Elvis、Ray Charles 可以视为类别,而描述可以视为子类别。现在的目标是拆分字符串,使类别和子类别放在一起。因此,结果应如下所示:

[1] "Sara: has brown hair" "Mary Jane: is, mostly, regarded as intelligent" "Marc-Oliver: big, handsome"
[2] "Elvis: loud, dead" "Ray Charles: silent, dead" "Rihanna: alive"

问题在于,对于任何配对,冒号之前的单词数量都不相同,同样,冒号之后的逗号数量也不同。有谁知道如何实现这一目标?

我尝试调整此解决方案(正则表达式来匹配第一个逗号和第一个数字之前的逗号之间的文本)和这个线程(在字符串中的第一个逗号上分割),但说实话,当涉及到更多复杂的正则表达式,我只看到字符放在一起。

r regex strsplit
1个回答
0
投票

使用

strsplit
分割逗号、空格和大写字符。分割时不要消耗大写字母。

strsplit(x, ", (?=[[:upper:]])", perl = TRUE)

给予

[[1]]
[1] "Sara: has brown hair"                          
[2] "Mary Jane: is, mostly, regarded as intelligent"
[3] "Marc-Oliver: big,handsome"                     

[[2]]
[1] "Elvis: loud, dead"         "Ray Charles: silent, dead"
[3] "Rihanna: alive"           
© www.soinside.com 2019 - 2024. All rights reserved.