R中的正则表达式:如何从字符串中提取字符

时间:2013-01-14 21:20:42

标签: regex r

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

,

我想提取:

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

姓氏可能包含标点字符,例如"goulenok" "meune" "gossec" "dougados" "kahan" "allanore" ',但始终位于-;之间

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

> sub(",.*$", "", strsplit(tutu, ";[ ]+")[[1]])
[1] "goulenok" "meune"    "gossec"   "dougados" "kahan"    "allanore"

答案 1 :(得分:1)

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

library(gsubfn)

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

答案 2 :(得分:0)

这有点生硬,但也有效:

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