电子邮件提取器 Java 不包含点前字符的模式

Email Extractor Java Pattern excluding characters before a dot

我目前正在使用运行良好的电子邮件提取器,但我想更改其模式:

[^a-zA-Z0-9-](?<num>[a-zA-Z0-9_-]{2,20}@[A-Za-z0-9_-]{3,20}\.[\.a-zA-Z0-9_-]+)[^a-zA-Z0-9_-]

此模式的问题在于它排除了点之前的所有字符。

例如,如果它找到像"john.smith@gmail.com"这样的电子邮件,它将报告"smith@gmail.com"

我不知道应该在模式中写什么所以它不再排除点之前的字符。

如果有人有想法,请告诉我...非常感谢!!

您的正则表达式似乎不正确,试试这个正则表达式:

\b(?<num>[a-zA-Z0-9][\w.-]{2,20}@[\w-]{3,20}\.[.\w-]+)\b

RegEx Demo