【问题标题】:How to extract substrings that start and end with a specific character, in a single string?如何在单个字符串中提取以特定字符开头和结尾的子字符串?
【发布时间】:2016-08-03 23:11:20
【问题描述】:

例如我有以下字符串:

sample = "I am a good guy; he is cool; I am a cool dude; let's do it!"

我需要找到以“I am”开头并以“;”结尾的子字符串所以输出应该是这样的:

I am a good guy
I am a cool dude

任何建议如何在 R 中做到这一点?谢谢

【问题讨论】:

  • 你在 R 编程中需要那个吗?
  • @rUCHit31yes 。对困惑感到抱歉。我将编辑问题并明确说明

标签: r string substring


【解决方案1】:

您可以使用正则表达式。例如

regmatches(sample, gregexpr("I am [^;]+;", sample))
# [[1]]
# [1] "I am a good guy;"  "I am a cool dude;"

请注意,由于每个字符串可以有多个匹配项,因此 R 返回一个向量列表。当你去处理结果时要注意。

【讨论】:

    【解决方案2】:

    这是一个stringr库解决方案:

    str_match_all(sample, "I am.*?;")
    #[[1]]
    #     [,1]               
    #[1,] "I am a good guy;" 
    #[2,] "I am a cool dude;"
    

    stringer 有几个非常强大的函数来处理从字符串中拆分和提取信息。

    【讨论】:

      【解决方案3】:

      我们可以使用str_extract_all

      library(stringr)
      str_extract_all(sample, "I am [^;]+(?=;)")[[1]]
      #[1] "I am a good guy"  "I am a cool dude"
      

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 2023-01-30
        • 1970-01-01
        • 1970-01-01
        • 2021-04-01
        • 1970-01-01
        相关资源
        最近更新 更多