我创建了一个正则表达式来从简历中提取电子邮件。然而,它也从这些简历中提取电话号码。怎么解决这个问题呢?观察:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
示例:
number 5579999644373
email [email protected]
正确匹配:
[email protected]
错误匹配:
[email protected]
你的正则表达式正在疯狂运行。用更深思熟虑的角色类别和更多界限来驯服它。
[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)
建立模式开始匹配的位置,然后创建一个简洁的 char 类并贪婪地匹配尽可能多的实例。
start here
^ here is my custom class
[a-zA-Z0-9+_.-] I am being very greedy
+`
@
(?:a-z0-9?\.)+a-z0-9?
这是一个用于匹配电子邮件的可靠正则表达式(来自教程点):
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$
https://www.tutorialspoint.com/checking-for-valid-email-address-using-regular-expressions-in-java