【发布时间】:2018-07-07 05:35:58
【问题描述】:
以Splitting String based on letters case 答案为基础;
lang <- "DeutschEsperantoItalianoNederlandsNedersaksiesNorskРусский"
strsplit(lang, "(?!^)(?=[[:upper:]])", perl = T)
结果
"Deutsch" "Esperanto" "Italiano" "Nederlands" "Nedersaksies" "NorskРусский"
问题是最后一对没有分开,因为俄语被转换为 UTF-8(字符串会有更多的变化;例如,维基百科中或多或少的所有其他语言)。我检查了在线正则表达式测试器和其他 SO 答案,但它们对 R 没有太大帮助。在基本 R 中也尝试了 iconv 和 Encoding 解决方法(似乎无法转换为 UTF-16;转换为字节不会帮助)。想法?
【问题讨论】:
-
怎么样:
(?!^)(?=\p{Lu}) -
嗯,很好。说真的,这到底是做什么的(它有效)?
-
\p{Lu}是一个 unicode 属性,代表L一个字母和u任何字母表中的大写
标签: r regex string unicode stringr