代码之家  ›  专栏  ›  技术社区  ›  Bogaso

在R中按空格拆分字符串

  •  0
  • Bogaso  · 技术社区  · 5 年前

    假设我有下面的字符串-

    Str = "15 1,270.00 19050 104.77 40.36 2020070 Rolling IN303028 - 63965276"
    

    现在我想根据以下内容拆分上面的字符串 space 然而,它不应该拆分最后一个短语,即。 'IN303028 - 63965276' 因此,我尝试使用-

    strsplit(Str, " ")
    

    但这也分裂了最后一句话。有什么办法可以分开吗 空间 但不包括以下模式 '03028-63965276' 即,如果连续两次 spaces 包含a hyphen 那么它应该排除这一部分。

    任何指针都将受到高度赞赏。

    谢谢,

    1 回复  |  直到 5 年前
        1
  •  4
  •   akrun    5 年前

    我们可以做一个正则表达式来检查字符后是否有空格不是 - ( [^-] )空格后面的字符不是 -

    strsplit(Str, "(?<=[^-]) (?=[^-])", perl = TRUE)
    #[[1]]
    #[1] "15"                  "1,270.00"            "19050"               "104.77"              "40.36"               "2020070"            
    #[7] "Rolling"             "IN303028 - 63965276"
    

    或使用 *SKIP *FAIL 不考虑存在的空间 -

    strsplit(Str, " - (*SKIP)(*F)| ", perl = TRUE)
    #[[1]]
    #[1] "15"                  "1,270.00"            "19050"               "104.77"              "40.36"               "2020070"            
    #[7] "Rolling"             "IN303028 - 63965276"