我正在尝试使用Stringr库从大而凌乱的文件中提取电子邮件。

str_match不允许perl = TRUE,而且我无法弄清楚转义字符以使其正常工作。

有人可以推荐一种相对健壮的正则表达式,该正则表达式可以在以下情况下使用吗?

c("[email protected]", "[email protected]", "[email protected]")->emails
"SomeRegex"->regex
str_match(emails, regex)

最佳答案

> "^[[:alnum:].-_]+@[[:alnum:].-]+$"->regex
> str_match(emails, regex)
     [,1]
[1,] "[email protected]"
[2,] "[email protected]"
[3,] "[email protected]"

@符号不需要在正则表达式中转义。还有“。”和“-”在字符类中并不特殊。如果要添加“.com”,“。co”,“。edu”,“。org”的要求,则应指定该列表的完整程度。

正如M42所指出的,这不是确定方法。实际上,它声称没有确定触发方法:Using a regular expression to validate an email address

07-24 17:46