(R)如何按标题大小写拆分字符串中的单词,如;WeLiveInCA“;变成;我们住在加州;在保留缩略语的同时?

(R)如何按标题大小写拆分字符串中的单词,如;WeLiveInCA“;变成;我们住在加州;在保留缩略语的同时?,r,regex,string,split,R,Regex,String,Split,(在R中)如何在不拆分缩写的情况下,将“WeLiveInCA”等字符串中的单词按标题大小写拆分为“We liveinca” 我知道如何在每个大写字母处拆分字符串,但这样做会拆分首字母/缩写,比如CA或USSR甚至usa.,我需要保留这些首字母/缩写 所以我在考虑一些逻辑类型,比如,如果字符串中的一个单词不是首字母,那么就用一个空格分割这个单词,其中一个小写字符后跟一个大写字符 下面我的代码片段用大写字母分隔带空格的单词,但它破坏了像CA变成CA这样的首字母,这是不可取的 s <- "WeL

(在R中)如何在不拆分缩写的情况下,将“WeLiveInCA”等字符串中的单词按标题大小写拆分为“We liveinca”

我知道如何在每个大写字母处拆分字符串,但这样做会拆分首字母/缩写,比如
CA
USSR
甚至
usa.
,我需要保留这些首字母/缩写

所以我在考虑一些逻辑类型,比如
,如果字符串中的一个单词不是首字母,那么就用一个空格分割这个单词,其中一个小写字符后跟一个大写字符

下面我的代码片段用大写字母分隔带空格的单词,但它破坏了像
CA
变成
CA
这样的首字母,这是不可取的

s <- "WeLiveInCA"
trimws(gsub('([[:upper:]])', ' \\1', s))
# "We Live In C A"

但这需要广泛适用(不仅仅是我的例子)

尝试使用base R
gregexpr/regmatches

s <- c("WeLiveInCA", "IDon'tEatKittensFYI", "YouKnowYourABCs")
regmatches(s, gregexpr('[[:upper:]]+[^[:upper:]]*', s))
#[[1]]
#[1] "We"   "Live" "In"   "CA"  
#
#[[2]]
#[1] "IDon't"  "Eat"     "Kittens" "FYI"    
#
#[[3]]
#[1] "You"  "Know" "Your" "ABCs"

s你如何区分
i不
ABCs
之间的区别?为什么要中断
I
Don
gsub((?这是一个很好的开始,但它没有回答OP问题。例如,美国在您的示例中不起作用。我也不tKnow@DevGin谢谢。图案
“[[:upper:][][:upper:][:punt:][]*[^[:upper:][]*“
得到了美国,但不是我没有,正如我在对问题的评论中所说。我仍在等待OP对这个问题的回答。
"We Live In CA"
#
"I Don't Eat Kittens FYI" "You Know Your ABCs"
s <- c("WeLiveInCA", "IDon'tEatKittensFYI", "YouKnowYourABCs")
regmatches(s, gregexpr('[[:upper:]]+[^[:upper:]]*', s))
#[[1]]
#[1] "We"   "Live" "In"   "CA"  
#
#[[2]]
#[1] "IDon't"  "Eat"     "Kittens" "FYI"    
#
#[[3]]
#[1] "You"  "Know" "Your" "ABCs"