我试图对正则表达式进行调整,使其找到与有效电子邮件地址结构匹配的字符串。如您所见,这是起点,非常简单:
\b([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-\._]*[A-Za-z0-9])@(([A-Za-z0-9]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\b
但是,我要重写此格式,以便以某些单词开头的电子邮件地址(例如,让我们使用“ blern”)会导致该电子邮件地址不匹配,因此不会被删除。这些触发词可能显示为电子邮件地址的前缀(blernsoandso@gmail.com)或带斜杠的前缀(blern/soandso@gmail.com),并且这两个实例都需要由正则表达式处理。一些电子邮件地址也可能带有“。”地址(blern/firstname.lastname@gmail.com)中,也需要正确处理。我以前曾尝试过回顾和提前解决所有这些问题,如以下正则表达式所示:
(?<!(blern/|other/))(?!(blern|other))\b([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-\._]*[A-Za-z0-9])@(([A-Za-z0-9]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\b
问题是运行此正则表达式的引擎为RE2,并且不支持环顾四周。因此,我需要完成我提到的所有这些修订,而无需使用先行或后备。有人对此问题有见识吗?如果您有任何原始电子邮件正则表达式的批评,我也将接受。