【问题标题】:Splitting a String by Space in R在 R 中按空格分割字符串
【发布时间】:2020-04-14 18:30:46
【问题描述】:

假设我有以下字符串 -

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

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

strsplit(Str, " ")

但这也拆分了最后一个短语。有没有办法按space 拆分但不包括'IN303028 - 63965276' 的模式,即如果两个连续的spaces 包含hyphen,那么它应该排除该部分。

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

谢谢,

【问题讨论】:

    标签: r regex


    【解决方案1】:

    我们可以进行正则表达式环顾以检查字符后面不是- ([^-]) 的空格以及空格后面不是- 的字符

    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"
    

    【讨论】:

    • 这是完美的。您能否解释一下您应用的模式,即“(?
    • @Bogaso 我添加了一些解释
    • @Bogaso 又添加了一个解决方案。你能检查一下这是否有帮助
    • 在#1 中,使用负数环视可能会更好,以适应多个连续空间的可能性。 Demo 1Demo 2.
    • 谢谢,我最初的解决方案是负面环视,但我发现了一个边缘情况并删除了它
    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多