У меня есть переменная a
, созданная readLines
файла, который содержит несколько электронных писем. Я уже отфильтровал только те строки с символом @, и теперь изо всех сил пытаюсь получить электронные письма. Текст в моей переменной выглядит так:
> dput(a[1:5])
c("buenas tardes. excelente. por favor a: [email protected]",
"[email protected] ", "Aprecio tu aporte , mi correo es [email protected] , Muchas Gracias",
"gracias [email protected]", "Me apunto, muchas gracias mi dirección [email protected] me será de mucha utilidad. "
)
Из этого вопроса в SO я получил отправной точкой для извлечения электронных писем (ответ @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: [email protected]" "[email protected] "
[3] "Aprecio tu aporte , mi correo es [email protected] , Muchas Gracias" "gracias [email protected]"
[5] "Me apunto, muchas gracias mi dirección [email protected] me será de mucha utilidad. "
Что я делаю неправильно и как я могу получить эти электронные письма? Спасибо!
str_extract
с чем-то вроде"\\S+@[^\\s@.]+\\.\\S+"
. Может быть много других регулярных выражений для извлечения электронной почты (просто выполните поиск SO) - person Wiktor Stribiżew   schedule 07.06.2016