我从简历中提取电子邮件的正则表达式也是从这些简历中提取电话号码

问题描述 投票:0回答:1

我创建了一个正则表达式来从简历中提取电子邮件。然而,它也从这些简历中提取电话号码。怎么解决这个问题呢?观察:

[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]

python regex email robotframework
1个回答
0
投票

你的正则表达式正在疯狂运行。用更深思熟虑的角色类别和更多界限来驯服它。

  1. 匹配电子邮件前缀:
  • 电子邮件中不接受其中许多字符。

[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)

建立模式开始匹配的位置,然后创建一个简洁的 char 类并贪婪地匹配尽可能多的实例。

start here
^
 here is my custom class
[a-zA-Z0-9+_.-]
 I am being very greedy
+`

  1. 匹配 at 符号

@

  1. 匹配域名

(?: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

© www.soinside.com 2019 - 2024. All rights reserved.