当大写字母跟随R中单词中间的下限字母时,拆分字符串

Tom*_*ers 6 regex string r

我有一些问题,不同的字符串被连接,我想再次拆分.我正在处理诸如此类的事情

name="o-n-Butylhydroxylamine1-MethylpropylhydroxylamineAmino-2-butanol"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,应分成 "o-n-Butylhydroxylamine", "1-Methylpropylhydroxylamine""Amino-2-butanol"

有什么想法我可以使用strsplit和/或gsub正则表达式来实现这一目标吗?我想要使​​用的规则是,当数字,括号("(")或大写字母跟在下限字母后面时,我想分开一个单词.有什么想法怎么做?

Jos*_*ien 10

您可以使用正向查找断言来查找(然后拆分)字符间位置,前面是小写字母,后面是大写字母,数字或a (.

name <- "o-n-Butylhydroxylamine1-MethylpropylhydroxylamineAmino-2-butanol"
pat <- "(?<=[[:lower:]])(?=[[:upper:][:digit:](])"
strsplit(name, pat, perl=TRUE)
# [[1]]
# [1] "o-n-Butylhydroxylamine"      "1-Methylpropylhydroxylamine"
# [3] "Amino-2-butanol"
Run Code Online (Sandbox Code Playgroud)