r - R如何检测字符串是否包含电子邮件地址并提取电子邮件地址和前5个单词?
问题描述
R正则表达式问题:我有一个职位和职位描述的data.frame,我需要
1) 检查职位描述是否包含电子邮件地址(可以是 .org、.edu、.gov、.com),以及
2)提取电子邮件地址和电子邮件地址前面的5个单词
数据集可以包含可以以 .edu、.com 等结尾的 Web url,还可以包含返回。基本上,我希望将电子邮件地址识别为具有 [letters/numbers]@[letters/numbers](.org、.edu、.gov、.com 以及电子邮件可以以其他任何结尾)的任何内容
这是一个示例数据集:
teststr = data.frame(job_title = c(1:8),
job_description = c('please send your resumes to adsf@dsf.com apply now!',
'asdfa@asdf.com/adsf asdf',
'visit us at sfds@adfa',
'apply now',
'follow us on @asdf.gov',
'asdfa.gov',
'.com',
''))
> teststr
job_title job_description
1 1 please send your resumes to adsf@dsf.com apply now!
2 2 asdfa@asdf.com/adsf asdf
3 3 visit us at sfds@adfa
4 4 apply now
5 5 follow us on @asdf.gov
6 6 asdfa.gov
7 7 .com
8 8
我尝试了(1),但得到了错误的答案
grepl('(*@.+\\.com)|(*@\\S\\.gov)', teststr$job_description)
(1) 的正确结果应该是
TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
解决方案
以下模式应与大多数电子邮件地址格式匹配:
([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)
要捕获前面的五个单词,请在模式上拆分字符串,然后再在空格上拆分,并捕获最多 6 个(包括)元素。
推荐阅读
- java - 在构建路径中添加 okio jar 文件导致“无法解析导入 (xxx)”错误
- reactjs - 错误:代码长度溢出。(24956>23648)?
- python - 如果我在游戏中连续按两次键,我想让角色跑得更快
- java - 有没有办法让 JButton 在第一次按下时做一件事,而在第二次按下时做其他事情
- php - 子表中的数据表子远程未定义ID
- javascript - 创建一个函数,从 JSON 操作从华氏到摄氏的值
- openthread - 替换 Wpantund 已弃用
- python - 缺少可选依赖项“gcsfs”。处理 GCS 文件需要 gcsfs 库使用 pip 或 conda 安装 gcsfs
- kubernetes - “--dry-run”的无效参数“client”
- r - 如何使用 dplyr 函数而不报错?