python-正则表达式

正则应用场景:登录注册,填写表单

使用正则少不了 re 模块

re 模块的 findall 方法

        在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到则返回空列表

import re # 导入 re 模块
a = 'python123456123'
# re 模块中的方法 findall 有两个行惨(匹配对象,匹配的变量)
print(re.findall('1',a))
print(re.findall('pyt',a))
print(re.findall('123',a))
# 只能从左往右,不能隔开匹配
print(re.findall('pt',a))
F:\python\python.exe "D:\muyi\my python\练习.py" 
['1', '1']
['pyt']
['123', '123']
[]

Process finished with exit code 0

re 模块的 match 方法

        re.match 从字符串的起始位置匹配,匹配成功,返回对象信息及匹配对象,如果不是起始位置匹配则返回 None 为空

import re # 导入 re 模块
a = 'python123456123'
# re 模块中的方法 match 有两个行惨(匹配对象,匹配的变量)
print(re.match('pyth',a))
print(re.match('thon',a))

F:\python\python.exe "D:\muyi\my python\练习.py" 
<re.Match object; span=(0, 4), match='pyth'>
None

Process finished with exit code 0

match 方法有两个功能 —— group 和 span

import re # 导入 re 模块
a = 'python123456123'
# re 模块中的方法 match 有两个行惨(匹配对象,匹配的变量)
print(re.match('pyth',a).group())  # 查看匹配的字符
print(re.match('python',a).span())  # 查看匹配的下标取值区间 —— 索引

F:\python\python.exe "D:\muyi\my python\练习.py" 
pyth
(0, 6)

Process finished with exit code 0

re 模块的 search 方法

        re.search 扫描整个字符串,匹配成功,返回一个匹配对象,包括匹配信息,search 只能匹配一个符合规则的对象,不会往下继续找

import re # 导入 re 模块
a = 'python123456123'
# re 模块中的方法 search有两个行惨(匹配对象,匹配的变量)
print(re.search('123',a))
print(re.search('1',a))
F:\python\python.exe "D:\muyi\my python\练习.py" 
<re.Match object; span=(6, 9), match='123'>
<re.Match object; span=(6, 7), match='1'>

Process finished with exit code 0

search 方法有两个功能 —— group 和 span

import re # 导入 re 模块
a = 'python123456123'
# re 模块中的方法 search有两个行惨(匹配对象,匹配的变量)
print(re.search('123',a))
print(re.search('1',a))
# search 方法有两个功能 —— group 和 span
print(re.search('123',a).group())  # 查看匹配的字符
print(re.search('123',a).span())  # 查看匹配的下标取值区间 —— 索引
F:\python\python.exe "D:\muyi\my python\练习.py" 
<re.Match object; span=(6, 9), match='123'>
<re.Match object; span=(6, 7), match='1'>
123
(6, 9)

Process finished with exit code 0

re 模块三个方法的区别

import re # 导入 re 模块
a = 'python123456123python'
print(re.findall('123',a))  # 匹配目标,返回所有相同匹配对象
print(re.match('python',a))  # 匹配目标,从起始开始,返回匹配对象信息及对象,只能匹配一个
print(re.search('123',a))  # 撇陪目标,返回匹配对象信息及对象,只能匹配一个
F:\python\python.exe "D:\muyi\my python\练习.py" 
['123', '123']
<re.Match object; span=(0, 6), match='python'>
<re.Match object; span=(6, 9), match='123'>

Process finished with exit code 0

元字符

实战案例 

写一个匹配手机的正则表达式

 写一个匹配手机的正则表达式,需要注释每个元字符的作用
# r 取消转义字符
# \d 匹配数字,即0-9
# ^$ 匹配开头和结尾
sj = '18788688528' # 定义一个手机号
value = input('请输入你的手机号:')
tada = re.findall(r'^1[3-9]\d{9}$',value) # 匹配输入的手机号
# len 判断长度是否为11位
if len(value) != 11:
    print('你输入的手机号不符合要求')
elif not tada:  # 如果匹配不成功
    print('请输入正确的手机号')
else:
    print('输入成功')

写一个匹配邮箱的正则表达式

​
# 1、写一个匹配邮箱的正则表达式,需要注释每个元字符的作用
import re

# r 取消转义字符
# \d 匹配数字,即0-9
# ^$ 匹配开头和结尾
A = 0
while A < 3:
    qq = input('请输入你的邮箱账号:')
    a = re.findall(r'^\d{5,10}@qq.com$', qq)  # 匹配qq号,至少5位,最多10位
    if len(qq) == 0:  # 判断QQ邮箱长度
        print(f'邮箱不能为空,你还有{2 - A}次机会,请重新输入')
        A += 1  # A的值叠加
        if A >= 3:
            print('你输入次数已达上限,即将退出')
    elif a == []:  # 匹配不成功则为 [] 空
        print(f'请输入正确的邮箱,你还有{2 - A}次机会')
        A += 1
        if A >= 3:
            print('输入错误已达上限,即将退出')
    else:
        print('输入正确')
        break

​
F:\python\python.exe "D:\muyi\my python\练习.py" 
请输入你的邮箱账号:
邮箱不能为空,你还有2次机会,请重新输入
请输入你的邮箱账号:1234567890
请输入正确的邮箱,你还有1次机会
请输入你的邮箱账号:1234567890@qq.com
输入正确

Process finished with exit code 0

匹配多个 :全选要匹配的代码 ,按快捷键 Ctrl+r 输入

(.*?):(.*)   匹配字段

'$1':'$2'  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值