使用 gsub 拆分成由大写字母标记的部分

Splitting into parts marked by capitals using gsub

在 R 中使用 gsub()substr() 我想拆分以下字符串

s <- c("IntAssisACTG", "IntFullPSYC", "IntAssocSOC") 

分为三个子部分

(1) "Int" (2) 下一组字母,在 "Int" 之后以第一个大写字母开始,在下一个大写字母之前结束,但长度不同(例如 "Assis"、"Full"、"Assoc" ) (3) 其余字母,始终全部大写,但长度不同(例如"ACTG"、"PSYC"、"SOC")

我想按原样返回这三个部分,并作为一个向量(例如 "Int" "Assis" "ACTG"),我读到 gsub 更适合我拆分时需要,同时不丢弃每次拆分开始的字符。

我在堆栈溢出时发现了这个

gsub("(?!^)(?=[[:upper:]])", " ", s, perl=T)

它越来越接近我想要的,除了 (i) 它在最后一段中拆分 所有 大写字母,而我在一个段中需要它们 (ii) 我不需要知道如何它是如何工作的

感谢任何帮助。

用捕获组替换前瞻并添加量词:

gsub("(?!^)([[:upper:]]+)", " ", s, perl=T)