day16 正则检测、匹配次数、分组与分支、re模块、匹配参数

本文介绍了Python正则表达式的使用,包括检测类符号如、B、^和$,匹配次数的操作如*、+、?和{},以及分组和分支的概念。此外,还讲解了re模块的功能,如创建正则表达式对象、匹配方法、查找、切割、替换等,并涉及匹配参数的设置,如单行匹配和忽略大小写。最后,文中给出了正则表达式的练习题目,涵盖了多种匹配场景。
摘要由CSDN通过智能技术生成

正则检测类符号

1) \b - 检测是否是单词边界

"""
单词边界:凡是可以将两个单词区分开的符号都是单词边界,例如:空白字符、标点符号对应的字符、字符串的开头和结尾
注意:检测类符号是在匹配成功的情况下,看检测类符号所在的位置是否符合要求
“”"

from re import *
re_str = r'abc\b123'
print(fullmatch(re_str, 'abc 123'))  # None     检测不影响匹配的长度,并且自相矛盾

2) \B - 检测是否不是单词边界

print('---------b--------')
re_str = r'\b\d\d\b'
result = findall(re_str, '99shj23结果 45 计时开始67,数据,89.计算机90l 78')
print(result)
print('---------B--------')
re_str = r'\B\d\d\B'
result = findall(re_str, '99shj23结果 45 计时开始67,数据,89.计算机90l 78')
print(result)

3) ^ - 检测是否是字符串开头

re_str = r'^\d\d'
result = findall(re_str, '99shj23结合实际 45 计时开始67,数据,89.计算机90l 78')
print(result)

4) $ - 检测是否是字符串结尾

re_str = r'\d\d$'
result = findall(re_str, '99shj23结合实际 45 计时开始67,数据,89.计算机90l 78')
print(result)

re_str = r'^\d\d\d$'

匹配次数

"""
三个a:‘aaa’ == ‘a{3}’
三个数字:’\d\d\d’ == ‘\d{3}’
2到5个大写字母:’[A-Z]{2,5}’
“”"

1. * - 0次或者多次(任意次数)

"""
a* - a出现0次或多次
\d* - \d出现0次或多次,每次的\d可以使任意一个数字,例如:1;12;123
[abc]* - [abc]出现0次或多次,每次的[abc]都可以是a、b、c中任意一个,例如:a;ab;aba;accb
“”"

re_str = r'a\d*b'
print(fullmatch(re_str, 'ab'))
print(fullmatch(re_str, 'a1b'))
print(fullmatch(re_str, 'a123b'))

2. + - 1次或者多次(至少一次)

re_str = r'a\d+b'
print(fullmatch(re_str, 'ab'))  # None
print(fullmatch(re_str, 'a1b'))
print(fullmatch(re_str, 'a123b'))

3. ? - 0次或者1次

re_str = r'[-+]?[1-9]\d'
print(fullmatch(re_str, '+16'))
print(fullmatch(re_str, '-16'))
print(fullmatch(re_str, '16'))

4. {}

"""
{N} - 匹配N次
{M,N} - 匹配M到N次,M和N都能取到
{M,} - 匹配至少M次
{,N} - 匹配最多N次
“”"

re_str = r'1a{2,5}2'
print(fullmatch(re_str, '1aaaaa2'))

re_str = r'1a{3}2'
print(fullmatch(re_str, '1aaa2'))

5.贪婪和非贪婪

"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值