以Splitting String based on letters case答案为基础;
lang <- "DeutschEsperantoItalianoNederlandsNedersaksiesNorskРусский"
strsplit(lang, "(?!^)(?=[[:upper:]])", perl = T)
结果
"Deutsch" "Esperanto" "Italiano" "Nederlands" "Nedersaksies" "NorskРусский"
问题是最后一对没有分开,因为俄语被转换为UTF-8(字符串中会有更多的变化;例如,或多或少维基百科中的所有其他语言)。我检查了在线Regex测试人员和其他SO答案,但他们对R没有太大帮助。在基础R中尝试iconv
和Encoding
变通办法(似乎无法转换为UTF-16;转换为字节没有帮助)。想法?
答案 0 :(得分:1)
使用unicode属性\p{Lu}
,表示任何字母表中的大写(u
)字母(L
)。见http://www.regular-expressions.info/unicode.html
lang <- "DeutschEsperantoItalianoNederlandsNedersaksiesNorskРусский"
strsplit(lang, "(?!^)(?=\p{Lu})", perl = TRUE)