用数字和字母拆分字符串

Jea*_*uda 4 string r stringr

我有字母和数字混合的字符串.我想分开他们并从他们那里判刑.

a<-"DiabetesTestInPast12months"
b<-"SmokingMorethan12PackYears"
c<-"30MinsOrLessExercise"
Run Code Online (Sandbox Code Playgroud)

我想得到:

a<-"Diabetes test in past 12 months"
b<-"Smoking more than 12 pack years"
c<-"30 mins or less exercise"
Run Code Online (Sandbox Code Playgroud)

我无法找到一种方法来使用stringr's 提取向量内的数字str_extract_all.

nic*_*ola 5

我试试:

#combine all the string in a vector
a<-c(a,b,c)
gsub("(?<=[0-9])(?=[A-Za-z])","\\1 \\2",
     gsub("(?<=[a-z])(?=[A-Z0-9])","\\1 \\2",a,perl=TRUE),
     perl=TRUE)
#[1] "Diabetes Test In Past 12 months" "Smoking Morethan 12 Pack Years" 
#[3] "30 Mins Or Less Exercise"
Run Code Online (Sandbox Code Playgroud)

简化一点:

gsub("(?<=[a-z])(?=[A-Z0-9])|(?<=[0-9])(?=[A-Za-z])"," ",a,perl=TRUE)
Run Code Online (Sandbox Code Playgroud)

得到相同的输出.

请注意,Morethan不能拆分,因为无法知道单独的单词(MoreThan会).