首页 > 解决方案 > 在 R 中,有没有办法使用正则表达式或类似的东西来提取电子邮件字符串的第一个和最后一个字符?

问题描述

目前在 R 中,使用 data.table,我有以下列:

jamesmann@yahoo.com       
bill.free@yahoo.com        
computer.trader@yahoo.com
j*****n@gmail.com

这是因素。我想解析上面的内容,以便我可以在@符号之前获取用户名的第一个和最后一个字母。

所以对于上面我想得到:

jn
be
cr
jn

我处理一些带星号的用户名,所以我也添加了它。有没有一种简单的方法可以做到这一点?任何想法将不胜感激。

标签: rregex

解决方案


将以下模式与字符串匹配并将其替换为捕获组:

sub("(.).*(.)@.*", "\\1\\2", s)
## [1] "jn" "be" "cr" "jn"

笔记

可重现形式的输入字符串是:

s <- c("jamesmann@yahoo.com", "bill.free@yahoo.com", "computer.trader@yahoo.com",
  "j*****n@gmail.com")

推荐阅读