如何使用正则表达式实现以下功能:
使用Python。
目前我正在尝试将电子邮件地址与这些规则相匹配。我目前的模式是
pattern = '^([A-Z0-9._-\"]|\"[!\,;]\"){1-127}+@[^-][A-Z0-9.-]{3-256}+\.[A-Z]{2,4}[^-]$'
但我对如何实施这些规则感到困惑。
更具体: 我想要一个与2个部分(名称,域名)组成的电子邮件地址相匹配的模式。 名称部分应不再是128个字符,应该在@之前。它应该 a-z0-9 字符的成员,还有。,_, - ,“。名称不能有相邻的点。 如果名称包含“,那么它应该与另一个”配对。名称可以包含!;,字符,如果它们位于配对“之间。
域名应不再是256 ,不短于3 字符,应以点分隔。域名无法以 - 开头或结尾。
此信息旨在帮助您了解我的需求,主要问题是我在顶部说明的三条规则。如果你告诉我如何实现它们,我将很高兴。
答案 0 :(得分:0)
我对你的问题感到困惑。你的标题用逗号分隔的列表,然后你谈论电子邮件地址。电子邮件有官方标准正则表达式:
(?:[a-z0-9!#$%&'*+/=?^_
{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_
{|}~-]+)|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])")@(?:(?:a-z0-9?.)+a-z0-9?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)])