regex - 需要正则表达式来编辑有效的电子邮件地址,但不是以某些单词开头的地址,不能使用环视
问题描述
我正在尝试对匹配的正则表达式进行调整,当它找到与有效电子邮件地址的结构匹配的字符串时。这是起点,正如您所看到的,它非常简单:
\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,并且不支持环视。所以我需要在不使用前瞻或后瞻的情况下完成我提到的所有这些修订。有人对这个问题有任何见解吗?如果您有任何批评,我也会接受对原始电子邮件正则表达式的任何批评。
解决方案
推荐阅读
- javascript - 如何在 Kotlin 编译为 JavaScript 中创建“选项对象”(具有许多可选属性的对象)?
- python - await user pins in discord.py?
- php - 警告:advanced_custom_search() 的参数 2 应为参考
- c - 我可以使用 SocketCAN 读取 CRC 和 ACK 位吗?
- php - 标识符“socket”已被声明
- python - 带日期的 SQLAlchemy 文字引发:查询参数的输入无效(预期 str,得到日期)
- c# - RabbitMQ - 发送自定义消息发布/订阅
- vba - VBA 检查安装的软件版本 HKEY_LOCAL_MACHINE
- pytest - 我们可以并行运行多个标记吗?
- email - Postfix Bounce Header 中的自定义 Header 信息