【问题标题】:take out the characters in the middle between spaces of a string in r取出r中字符串空格中间的字符
【发布时间】:2020-08-16 00:22:27
【问题描述】:

我有几个类似的字符串

"AAA BBB CCC 1X2L BOT BR,DDD EEE FFF 3X4L BOT BR,GGG 5X6L BOT BR"

我只想取出最后一个空格之前的字符,即我想要

“1X2L、3X4L、5X6L”

只有。

如何在 R 中实现这一点?

【问题讨论】:

    标签: r string character space


    【解决方案1】:

    您可以在用逗号(,)分割字符串后尝试使用sub

    x <- "AAA BBB CCC 1X2L BOT BR, DDD EEE FFF 3X4L BOT BR, GGG 5X6L BOT BR"
    sub('.*?(\\w+)\\s\\w+\\s\\w+$', '\\1', strsplit(x, ',\\s')[[1]])
    #[1] "1X2L" "3X4L" "5X6L"
    

    .*? - 匹配尽可能少的字符,直到

    ((\\w+) - 是一个捕获组来捕获我们想要的单词

    \\s - 后跟一个空格

    \\w+ - 一个词后跟

    \\s - 遇到另一个空格和一个单词 (\\w+)。)

    【讨论】:

    • 用一些解释更新了答案。
    • 谢谢! '\\1' 在这里是什么意思?
    • 这是一个反向引用,用于提取捕获组中存在的内容,即 ((\\w+))。
    【解决方案2】:

    在这种情况下您可以使用另一个正则表达式

    library(stringr)
    str_extract_all(x, "\\d{1}\\w{1}\\d{1}\\w{1}")
    #[1] "1X2L" "3X4L" "5X6L"
    
    • \\d{1}: 只匹配一位数字
    • \\w{1}: 只匹配一个字母

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2016-11-24
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      相关资源
      最近更新 更多