【问题标题】:regular expression in R: how to extract characters from a stringR中的正则表达式:如何从字符串中提取字符
【发布时间】:2013-01-14 21:20:42
【问题描述】:

我有一个字符串向量,每个字符串都包含一个或多个作者的姓氏和名字。我想提取每个字符串中每个作者的姓氏。我所知道的是,首先出现的名字总是作者(第一作者)的姓氏,而其他作者的姓氏是介于;, 之间的所有内容。例如,在以下字符串中:

tutu <- "goulenok, tiphaine miquel; meune, christophe; gossec, laure; dougados, maxime; kahan, andre; allanore, yannick"

我要提取:

"goulenok" "meune" "gossec" "dougados" "kahan" "allanore"

姓氏可以包含标点符号,例如'-,但始终介于;, 之间

有什么想法吗?

【问题讨论】:

  • 您的输入是全部在一个字符串中(由您的代码建议),还是一个字符串向量(由您的问题建议)?
  • 它实际上是一个字符串向量。谢谢,
  • 它实际上是一个字符串向量。我不会提取相同数量的作者姓名,我需要按照出现的顺序将它们放入 data.frame 中。谢谢,

标签: regex r


【解决方案1】:
> sub(",.*$", "", strsplit(tutu, ";[ ]+")[[1]])
[1] "goulenok" "meune"    "gossec"   "dougados" "kahan"    "allanore"

【讨论】:

    【解决方案2】:

    这是一种使用 gsubfn 包的方法:

    library(gsubfn)
    
    unlist(strapplyc(tutu, "(?:^|;) *([^,]+)"))
    

    【讨论】:

      【解决方案3】:

      这有点生硬,但也有效:

      sapply(unlist(lapply(strsplit(tutu, ";"), strsplit, ",")), "[", 1)
      

      【讨论】:

        猜你喜欢
        • 2014-08-25
        • 1970-01-01
        • 2015-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 2016-02-24
        相关资源
        最近更新 更多