gpt4 book ai didi

regex - R gsub 从文本中提取电子邮件

转载 作者:行者123 更新时间:2023-12-01 05:12:04 24 4
gpt4 key购买 nike

我有一个变量 a创建者 readLines包含一些电子邮件的文件。我已经只过滤了那些带有@ 符号的行,现在正在努力获取电子邮件。我的变量中的文本如下所示:

> 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. "
)

来自 this 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: 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. "

我做错了什么,如何获取这些电子邮件?谢谢!

最佳答案

我们可以试试str_extract()来自 stringr包裹:

str_extract(text, "\\S*@\\S*")

[1] "Saolonm@hotmail.com"
[2] "26.leonard@gmail.com"
[3] "jcdavola31@gmail.com"
[4] "andrescarnederes@headset.cl"
[5] "luciana.chavela.ecuador@gmail.com"

哪里 \\S*匹配任意数量的非空格字符。

关于regex - R gsub 从文本中提取电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37681197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com