当前位置:  开发笔记 > 编程语言 > 正文

使用R匹配电子邮件格式

如何解决《使用R匹配电子邮件格式》经验,为你挑选了1个好方法。

我在datacamp.com上有一个介绍课并遇到了问题.

目标:找到合适的电子邮件grep."正确的电子邮件"由"@"定义,以".edu"结尾.

电子邮件矢量:

emails <- c("john.doe@ivyleague.edu", "education@world.gov", "dalai.lama@peace.org", 
        "invalid.edu", "quant@bigdatacollege.edu", "cookie.monster@sesame.tv")

我在想

grep("@*\\.edu$",emails)

它给了我

[1] 1 4 5

因为我认为"*"匹配"多个字符".后来我发现它不起作用.

原来正确的代码是

grep("@.*\\.edu$",emails)

我搜索了一些文档,只是模糊地了解如何获得正确的答案.有人可以解释一下R与正确的电子邮件完全匹配吗?谢谢一堆!



1> 42-..:

你已经被告知使用星号量词没有给你你需要的特异性,所以使用"+"量词,它强制至少一个这样的匹配.我决定通过添加一些有重复符号的地方来使问题更复杂:

emails <- c("john.doe@@ivyleague.edu", "education@@world.gov", "dalai.lama@peace.org", 
"invalid.edu", "quant@bigdatacollege.edu", "cookie.monster@sesame.tv")


grep( "^[^@]+@[^@]+\\.edu$", emails)
#[1] 5

它使用正则表达式字符类结构,其中侧面方括号内的项目被视为文字,除非有一个初始向上插入符号("^"),在这种情况下它是字符类的否定,即在这种情况下除"@"之外的任何字符.这也将排除at符号是第一个字符的情况.感谢KonradRudolph指出,添加"^"作为模式中的第一个字符(表示潜在匹配的第一个字符之前的点)会阻止允许匹配初始"@@"的项目.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有