【问题标题】:Split String by Upper Case Consisting of Both Latin and Unicode按由拉丁文和 Unicode 组成的大写字母拆分字符串
【发布时间】: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


【解决方案1】:

使用 unicode 属性 \p{Lu} 表示任何字母表中的大写 (u) 字母 (L)。见http://www.regular-expressions.info/unicode.html

lang <- "DeutschEsperantoItalianoNederlandsNedersaksiesNorskРусский"
strsplit(lang, "(?!^)(?=\p{Lu})", perl = TRUE)

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多