Python学习笔记——week_5

第七章 模式匹配与正则表达式

1.正则表达式匹配

(1)import re 导入模块
(2)re.compile() 创建一个Regex对象(匹配格式)(rule=re.compile(r’\d\d’))
(3)search()传入想要查找的文本(x=rule.search(‘my lucky num is 25’))
(4)gounp()返回实际匹配格式的文本的字符串(x.gound()=25)
ps. r’'可以标记为原始字符串,但其中的有些字符(?、.、*、+)使用原始格式时要加反斜杠(\)

2.正则表达式匹配的其他模式

形式作用
括号(())拆分目标文本
管道(|)使用匹配多个格式,|左右的格式都可以
问号(()?)括号内的的格式可有可没有(出现0次或1次)
星号(()* )括号内的格式出现0次或多次
加号(()+)括号内的格式出现1次或多次
花括号((){a,b} )括号内的格式出现a至b次(可以单指x次)
问号2( {a,b}?)不贪心匹配:当文本出现的次数在ab范围内时,只匹配最小个数;不加问号默认为贪心匹配(匹配最多个数)

ps.括号只是为了解释更清楚,有些地方可以省略

3.finfall()函数

search()函数只返回第一个查找到符合格式的Match对象(x的值只有一个),但findall()函数将返回匹配格式的所有Match对象,所有Match对象作为一个列表返回;如果rule进行了分组,那么列表的每个元素将以元组的形式来表示各分组。

4.sub()函数

在Regex对象上调用,有两个参数,第一个是要代替Regex对象的文本,第二个是原始文本(被查找的文本)。

5.字符分类

基本字符:

符号含义
\d数字
\w单词——字母、数字、下划线
\s空白字符——空格、制表符、换行符
\D非\d
\W非\w
\S非\s
.任意字符(除换行符以外)

自定义分组:

符号含义
[abcdA]匹配所有a、b、c、d、A字符
[a-zA-Z]匹配所有大写小写字母
[\.\?\*\(\)]匹配所有.、?、*、()字符——倒斜杠转义字符
.*匹配所有字符(除换行符以外)
.{5}匹配5个字符(除换行符以外)

6.特殊符号

插入符号(^):在正则表达式开始时使用,表示匹配格式必须在被查找文本的开始处。
美元符号($):在正则表达式结尾时使用,表示匹配格式必须在被查找文本的结尾处。

7.compile()函数的特殊参数

complie()函数的第二参数有三个特殊的值:

参数值作用
re.IGNORECAST( re.I)不区分Regex对象中正则表达式的大小写
re.DOTALL使(.)可以匹配所有字符,包括换行符
re.VERBOSE忽略 Regex对象中正则表达式中的空白符和注释——用于复杂的表达式解释

8.实践项目

(1)强口令检查(密码不能太简单):长度不少于8个字符、包含大小写字符、至少一个数字。

import re
def check(text):
    if len(text)<8:
        print('口令不能少于八个字符')
    elif re.compile(r'[a-z]').search(text)==None:
        print('口令必须同时包含大小写字符')
    elif re.compile(r'[A-Z]').search(text)==None:
        print('口令必须同时包含大小写字符')
    elif re.compile(r'\d+').search(text)==None:
        print('口令至少要有一位数字')
    else :
        print('口令通过')
while True:
    print('请输入一个口令')
    text =input()
    check(text)
    

(2)strip()函数的正则表达式版本:第一个参数接受一个字符串,第二个参数指定所要删除的字符,默认去除首尾空白字符。

import re

def strip_xiao(text,remove_text):   
    if remove_text == '':
        newtext = re.compile(r'^\s* | \s*$').sub('',text)
    else:
        newtext = re.compile(r'^['+remove_text+']*|['+remove_text+']*$').sub('',text)
    return newtext
while True:                     #验证板块
    print('请输入一个字符串')
    x1 =input()
    x2 =input()
    print(strip_xiao(x1,x2))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值