这些是5个Twitter用户描述。我们的想法是从每个字符串中提取电子邮件。
这是我试过的代码,它可以运行,但可能还有更好的东西。 我宁愿避免使用unlist()并使用正则表达式一次性完成。我已经看到了python / perl / php的其他问题但不是R. 我知道我可以使用grep(...,perl = TRUE),但这不应该是唯一的方法。 如果它有效,当然有帮助。
ds <- c("#MillonMusical | #PromotorMusical | #Diseñador | Contacto : ezequielife@gmail.com | #Instagram : Ezeqielgram | 01-11-11 | @_MillonMusical @flowfestar", "LipGLosSTudio by: SAndry RUbio Maquilladora PRofesional estudiande de diseño profesional de maquillaje artistico lipglosstudio@hotmail.com/", "Medico General Barranquillero radicado con su familia en Buenos Aires para iniciar Especialidad Medico Quirurgica. email jaenpavi@hotmail.com", "msn =
rdt031169@hotmail.comskype = ronaldotorres-br", "Aguante piscis / manuarias17@gmail.com buenos aires"
)
ds <- unlist(strsplit(ds, ' '))
ds <- ds[grep("mail.", ds)]
> print(ds)
[1] "\t\tezequielife@gmail.com" "lipglosstudio@hotmail.com/"
[3] "jaenpavi@hotmail.com" "rdt031169@hotmail.comskype"
[5] "/\t\tmanuarias17@gmail.com"
分开这个&#34; rdt031169@hotmail.comskype" 也许要求它以.com或.com.ar结束,这对我正在做的事情有意义
答案 0 :(得分:5)
这是另一种选择:
> regmatches(ds, regexpr("[[:alnum:]]+\\@[[:alpha:]]+\\.com", ds))
[1] "ezequielife@gmail.com" "lipglosstudio@hotmail.com" "jaenpavi@hotmail.com" "rdt031169@hotmail.com"
[5] "manuarias17@gmail.com"
根据@Frank的评论,如果您希望在示例.com
之后保留.com.ar
之后的国家/地区标识符,请查看以下内容:
> ds <- c(ds, "fulanito13@somemail.com.ar") # a new e-mail address
> regmatches(ds, regexpr("[[:alnum:]]+\\@[[:alpha:]]+\\.com(\\.[a-z]{2})?", ds))
[1] "ezequielife@gmail.com" "lipglosstudio@hotmail.com" "jaenpavi@hotmail.com" "rdt031169@hotmail.com"
[5] "manuarias17@gmail.com" "fulanito13@somemail.com.ar"