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