【问题标题】:How to extract substring from a string?如何从字符串中提取子字符串?
【发布时间】:2014-07-22 19:26:05
【问题描述】:

有些字符串显示以下模式

ABC, DEF.JHI
AB,DE.(JH)

一般来说,它包括三个部分,分别用,.分隔,最后一个字符可以是普通字符,也可以是)之类的东西。我想提取最后一部分。比如我想根据上面的生成如下两个字符串

JHI
(JH)

有没有办法在 R 中做到这一点?

【问题讨论】:

    标签: r string substring


    【解决方案1】:
    library(stringr)
     str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
     str_extract(str1,perl('(?<=\\.).*'))
    #[1] "JHI"  "(JH)"
    

    (?&lt;=\\.)搜索.后跟.*所有字符

    【讨论】:

      【解决方案2】:

      您可以使用strsplit. 上拆分并提取第二个元素。

      str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
      unlist(lapply(strsplit(str1, "\\."), "[", 2))
      # [1] "JHI"  "(JH)"
      

      【讨论】:

        【解决方案3】:

        这是另一种可能性:

        sapply(strsplit(str1, "\\.\\(|\\.|\\)"), "[[", 2)
        

        【讨论】:

          【解决方案4】:

          根据@josiber 的回答,您可以删除. 之前的字符串部分

          str1 <- c("ABC, DEF.JHI","AB,DE.(JH)")
          
          gsub(".*\\.", "", str1)
          # [1] "JHI"  "(JH)"
          

          编辑

          如果您的第三个元素并不总是以. 开头,则提取最后一部分

          str1 <- c("ABC, DEF.JHI","AB,DE.(JH)", "ABC.DE, (JH)")
          
          gsub(".*[,.]", "" , str1)
          # [1] "JHI"   "(JH)"  " (JH)"
          

          【讨论】:

            猜你喜欢
            • 2011-11-17
            • 2012-10-24
            • 2011-07-21
            • 1970-01-01
            • 2023-04-03
            • 2018-09-29
            • 2021-12-23
            相关资源
            最近更新 更多