如何使用正则表达式分隔名称?

时间:2017-08-30 07:06:37

标签: r regex

我有一个名称向量,如下所示:

 vname<-c("T.Lovullo (73-58)","K.Gibson (63-96) and A.Trammell (1-2)","T.La Russa (81-81)","C.Dressen (16-10), B.Swift (32-25) and F.Skaff (40-39)")

提防T.La Russa,他的名字中有一个空格

我想使用 str_match 来分隔名称。这里的困难是一些字符包含两个名字而另一个只包含一个像我给出的例子。 我已经编写了我的代码,但它不起作用:

str_match_all(ss,"(D[.]D+.+)s(\\(d+-d+\\))(s(and)s(D[.]D+.+)s(\\(d+-d+\\)))?")

1 个答案:

答案 0 :(得分:2)

也许这有帮助

res <- unlist(strsplit(vname, "(?<=\\))(\\sand\\b\\s)*", perl = TRUE))
res
#[1] "T.Lovullo (73-58)"  "K.Gibson (63-96)"   "A.Trammell (1-2)"   "T.La Russa (81-81)"

仅获取名称(如果这是预期的)

sub("\\s*\\(.*", "", res)
#[1] "T.Lovullo"  "K.Gibson"   "A.Trammell" "T.La Russa"