【发布时间】:2016-06-07 13:45:14
【问题描述】:
我有一个由readLines 创建的变量a,其中包含一些电子邮件。我已经只过滤了带有@符号的那些行,现在正在努力获取电子邮件。我的变量中的文本如下所示:
> dput(a[1:5])
c("buenas tardes. excelente. por favor a: Saolonm@hotmail.com",
"26.leonard@gmail.com ", "Aprecio tu aporte , mi correo es jcdavola31@gmail.com , Muchas Gracias",
"gracias andrescarnederes@headset.cl", "Me apunto, muchas gracias mi dirección luciana.chavela.ecuador@gmail.com me será de mucha utilidad. "
)
从 SO 中的this 问题,我得到了提取电子邮件的起点(@Aaron Haurun 的回答),稍作修改(我在@ 之前添加了[\w.] 以解决名称之间带有. 的电子邮件) 在 regex101.com 中提取电子邮件效果很好。但是,当我将它移植到 gsub 时它失败了:
> gsub("()(\\w[\\w.]+@[\\w.-]+|\\{(?:\\w+, *)+\\w+\\}@[\\w.-]+)()",
"\\2",
a[1:5],
perl = FALSE) ## It doesn't matter if I use perl = TRUE
[1] "buenas tardes. excelente. por favor a: Saolonm@hotmail.com" "26.leonard@gmail.com "
[3] "Aprecio tu aporte , mi correo es jcdavola31@gmail.com , Muchas Gracias" "gracias andrescarnederes@headset.cl"
[5] "Me apunto, muchas gracias mi dirección luciana.chavela.ecuador@gmail.com me será de mucha utilidad. "
我做错了什么,如何获取这些电子邮件?谢谢!
【问题讨论】:
-
使用 stringr
str_extract和"\\S+@[^\\s@.]+\\.\\S+"之类的东西。可能还有很多其他的电子邮件提取正则表达式(只需搜索 SO)