
Python练习题90--炸裂的正则表达式
在函数内,如果邮箱email满足下面提到的条件,则返回True,否则返回False。由于“@”和“.”两个字符需要按照规定的字符顺序,使用常规的if-else语句进行判断也行,但是需要多次进行判断;正则表达式搞起来有点难度,自己想挑战一下,搞了一个多小时还是有问题,用DeepSeek搞搞,1分钟就能搞定。解释:测试输入user@website.com返回True,因为它满足程序中指定的有效邮箱地址
本练习来自于哈希编程第90题,题目网址:
https://edu.py2fun.com/learn#/problemset/all/code/696?redirect=%2Fproblemset%2Fall%2F3
1. 题目要求
编写一个程序来验证一个邮箱地址是否合法。
定义函数is_email_valid(),参数为email。
在函数内,如果邮箱email满足下面提到的条件,则返回True,否则返回False。 要求邮箱有效,必须满足以下条件: 1. 字符串必须包含一个@字符。 2. 字符串必须包含一个.字符。 3. @必须有至少一个字符在它之前。 4. .和@必须处于适当的位置。
例如,hello.email@com是无效的,而john.smith@email.com是有效的。
示例输入1:user@website.com 示例输出1:True
示例输入2:web.user@com 示例输出2: False
解释:测试输入user@website.com返回True,因为它满足程序中指定的有效邮箱地址的所有条件。
2. 解题思路
由于“@”和“.”两个字符需要按照规定的字符顺序,使用常规的if-else语句进行判断也行,但是需要多次进行判断;使用正则表达式,能够简单的一步到位。
3. 实现代码
def is_email_valid(email):
# 此处编写代码
import re
pattern = r'^[^@]+@([^@.]+\.)+[^@.]+$'
return bool(re.fullmatch(pattern, email))
# 获取输入
email = input()
# 调用函数
print(is_email_valid(email))
正则表达式解释:
-
正则表达式分解:
-
^[^@]+
:匹配@
前的本地部分,确保至少有一个非@
字符。 -
@
:匹配@
字符。 -
([^@.]+\.)+
:匹配域名部分中的每个段,每个段由非@
和非.
的字符组成,并以.
分隔,确保至少有一个段。 -
[^@.]+$
:匹配域名的最后一个段,确保不以.
结尾。
-
-
验证过程:
re.fullmatch(pattern, email)
使用正则表达式检查整个邮箱字符串是否匹配,若匹配则返回True
,否则返回False
。
-------------------------------------------------------------------------------------------
正则表达式搞起来有点难度,自己想挑战一下,搞了一个多小时还是有问题,用DeepSeek搞搞,1分钟就能搞定。。。
编程还有练习的必要吗?
更多推荐
所有评论(0)