我正在尝试做一个电子邮件匹配器,因为有很多这样的东西:
https://site_1.com@site_2.com/xxxxx
我决定用一个负数来摆脱这些。我的尝试如下:
regex = r"([a-zA-Z0-9._-]+(?!https?://.*)@[a-zA-Z0-9._-].[a-zA-Z0-9])"
我的想法是,消极的环顾四周将无法匹配任何与https://xxxxx@,但显然我错了。我做了以下操作:
email_search = re.compile(regex)
email_search.search("https://siteA.com@siteB.com")
结果是一个匹配,匹配的字符串是//siteA.com@siteB.com
我有点不得不使用re.search
,因为我正在使用混淆的文本,但是负面的展望应该在我的理解中发挥作用,请告诉我我做错了什么以及如何正确地做,任何帮助都是感激的!
使用负查找来防止某些输入匹配(即"precondition "):
regex = r"(?!https?://)<actual email regex here>"
你可以链接它们:
regex = r"(?!<exclude this>)(?!<exclude that>)(?!<and that>)<actual regex here>"
除此之外- so, so,so现在已经有许多电子邮件匹配正则,我不鼓励你再发明一个。从一堆里挑一个。
较好的版本从一开始就不允许https://site_1.com@site_2.com/xxxxx
这样的东西,因此您不必在自己的创建中围绕缺陷工作。