python基础------正则(re)

正则表达式

1.1 匹配、切割、替换字符串

import re
#从开头位置查找,只查找一次
result=re.match('\d\d\d\d', '1994hs4jkk')
print(result.group())
#从头至尾查找,只查找一个值,返回
ret=re.search(r'\d+','阅读次数为9999')
print(ret.group())
#匹配出所有的数字字符串(从头至尾查,查找到所有的值,然后以列表的形式返回)
ret=re.findall('\d+','python=9999 c=7890,c++=12345')
print(ret)

#切割字符串
ret=re.split(':1','info:xiaozhang 123 shandong')
print(ret)

#替换字符串
re.sub()

1.2 匹配单个字符串


import re
ret = re.match(".","a")
print(ret.group())
ret = re.match("[hH]","hello PytHon")
print(ret.group())
ret = re.match("[0-9]","7Hello Python")
print(ret.group())
ret = re.match("嫦娥\d号","嫦娥1号发射成功")
print(ret.group())

1.3 匹配多个字符串

# 匹配多个字符串
import re
ret = re.match("[A-Z][a-z]*","Mmnp")
print(ret.group())
匹配变量名是否有效
ret = re.match("[a-zA-Z_]+[\w_]*","name1_")
print(ret.group())
匹配出,099之间的数字
ret = re.match("[1-9]?[0-9]","77321")print(ret.group())
ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
print(ret.group())
#匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线
ret1 = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
print(ret1.group())

1.4 匹配开头结尾

import re
ret = re.match(r"[\w]{4,20}@163\.com", "xiaoWang@163.com")
print(ret.group())^确定开头
ret = re.match("^[\w]{4,20}@163\.com", "xiaoWang@163.comheihei")
print(ret.group())
通过$来确定末尾
ret = re.match("[\w]{4,20}@163\.com$", "xiaoWang@163.comheihei")
print(ret.group())
# 编程引导:re模块、match方法
#   匹配手机号
#   匹配出163的邮箱地址,且@符号之前有4到20位
import re
res=re.match('[\d]*', '17835417896')
print(res.group())
ress=re.match('[0-9]*@qq\.com$','16054444@qq.com')
print(ress.group())
ret = re.match("[1-9]?[0-9][0-9]","57")
print(ret.group())

import re
ret = re.match("200|100|300","300")
print(ret.group())

匹配出163126、qq邮箱
import re
ret = re.match("\w{4,20}@163\.com", "test@163.com")
print(ret.group())
ret = re.match("\w{4,20}@(163|126|qq)\.com", "test@126.com")
print(ret.group())

案例1:

 思路分析:
# 1、邮箱@前6-16位字符的163邮箱。
# 2、手机号11位,第一位是1,第二位是3,5,7,8。
# 3、用户名不少于4位字符。
# 4、昵称不少于2个字符。
# 5、密码是6位数字。
import re
mail=input('请输入邮箱:')
if re.match(r'\d{6,16}@163.com',mail):
     iphone=input('请输入手机号')
     if re.match('1[3,5,7,8][\d]{9}$',iphone):
         username=input('请输入用户名:')
         if re.match('[a-zA-Z0-9]{4,}',username):
             name=input('请输入昵称:')
             if re.match('[a-zA-Z0-9]{2,8}',name):
                 password = input('请输入密码:')
                 if re.match('[a-zA-Z0-9]{6}',password):
                     print('注册成功')
                 else:
                     print('请重新输入密码')
             else:
                 print('请输入2-8位的昵称')
         else:
             print('输入大于4位的用户名')
     else:
         print('输入11位手机号')
 else:
     print('6-16位字符的163邮箱')

案例2:
使用正则和异常完成会员注册所涉及的以下操作
(1)提醒用户从键盘输入一个手机号吗
(2)首先判断手机号码是否为11位,如果是就是进入下一步,如果不是,请输出长度不正确
(3)接着用正则判断,手机号码是否是以13/15/17/18/19开头的数字,是则输出:手机号符合规范,否则请输出:请你留下正确的手机号
(4)提醒用户从键盘输入一个自己的邮箱
(5)要求邮箱账号长度为6-10位,匹配的邮箱名字由数字、字母、下划线组成
(6)邮箱为qq或163或126,要求:(5)和(6)均利用正则解决
(7)如果符合要求,则输出邮箱,如果不符合则输出:邮箱不合要求,要求用异常实现
(8)邮箱的输入只给用户3次机会,机会用完仍然不合要求,则提示:用户注册失败。

import re
number=input('请输入一个手机号:')
count=0
if len(number)==11:
    if re.match(r'(13|15|17|18|19)[\d]{9}',number):
            while True:
                count+=1
                box=input('请输入一个邮箱')
                seq=r'[\d\w_]{6,10}@(qq|163|126)\.com'
                try:
                    c = re.match(seq, box)
                    if c:
                        print(f'邮箱为:{box}')
                        break
                    else:
                        if count>=3:
                            print('用户注册失败')
                            break
                        raise BaseException
                except BaseException:
                    print('邮箱不合要求')
    else:
        print('请你留下正确的手机号 ')
else:
    print('手机号码长度不正确')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞龙程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值