初学Python,求解释代码执行失败的原因
import re
def is_valid_email(addr):
re_email = re.compile(r'([0-9a-zA-Z][0-9a-zA-Z\.]*)@([0-9a-zA-Z]+)\.([0-9a-zA-Z]+)')
emailmatch = re_email.match(addr)
if emailmatch:
return True
return False
addr = '<Tom Paris> [email protected]'
print("%s %s" % (addr, is_valid_email(addr)))
输出
<Tom Paris> [email protected] False
期望输出 True
notepad++可以匹配到,另外请原谅我 markdown 语法是刚学的

初学Python,求解释代码执行失败的原因
改成 search,match 表示从头匹配
我无法理解你的问题
了解。另外改为 search 又有一个问题,非法+合法+非法的字符串也会被识别为合法,这又该怎么屏蔽
if emailmatch:
----return True
return False
换成
return emailmatch
是不是显得简洁一些?
正则表达式结尾加上 $
对哦…完全没想到可以直接返回
另外我这里的正则表达式也写的很垃圾= =!感觉整个函数都是槽点
import re
addr1 = ‘<tom paris=""> [email protected]’
addr2 = ‘[email protected]’
re_email = re.compile(r’([0-9a-zA-Z][0-9a-zA-Z.]*)@([0-9a-zA-Z]+).([0-9a-zA-Z]+)’)
print(re_email.match(addr1))
print(re_email.match(addr2))
print(re_email.search(addr1))
print(re_email.search(addr2))
➜ TEST python re.py
None
<_sre.SRE_Match object at 0x10b198ae0>
<_sre.SRE_Match object at 0x10b198ae0>
<_sre.SRE_Match object at 0x10b198ae0>
结尾加$并且控制最多只能为 3 个字符就好
www。liaoxuefeng。com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000

