self_regular expression

from re import fullmatch
import re
# 语法:通过正则符号来描述字符串规则
# 1.匹配类符号 - 用来规定描述对字符的要求
# 1)普通字符 - 除了特殊符号以外的符号都是普通字符(在正则中表示符号本身) fullmatch:匹配失败为None
# print(fullmatch(r'abc','abe'))
# # 2) .      -       匹配任意一个字符
# print(fullmatch(r'a.*c','a111110.23fafc'))
# # 3)\d      -       匹配任意一个数字字符
# print(fullmatch(r'a\d*c','ac'))
# # 4)\s      -       匹配任意一个空白字符 :' ','\n','\t'
# print(fullmatch(r'a\s+c?','a \tc'))
# # 5)\w      -       匹配任意一个数字,字母,下划线或者中文
# print(fullmatch(r'a\w*c','a话c'))
# # 6) \大写字母(D,S,W)       -       功能相反
# print(fullmatch(r'a\Dc','a!c'))
# 7)[]      -       匹配字符集中的任意一个字符
'''
用法一:在[]中提供多个字符,匹配多个字符中的任意一个
用法二:[字符1 - 字符2],匹配字符1到字符2范围内中的任意一个字符
[\u4e00 -\u9fa5]
[a - zA_Z]
[\dA - Z]:匹配任意数字或者大写字母
用法3:在[]中包含\开头的特殊符号
[]中的减号只有在两个字符之间才表示谁到谁
'''
# print(fullmatch(r'a[mn1]bc','a1bc'))
# print(fullmatch(r'a[\u4e00 -\u9fa5]{2}c','a哈哈c'))
# # 8)[^字符集]      -       匹配不在字符集中的任意一个字符
# print(fullmatch(r'a[^mn1]bc','a啦bc'))
# # print(fullmatch(r'a[^a -z]{4}bc','a1111bc'))
# # 2.匹配次数:任何匹配类符号后面都可以添加匹配次数对应的符号来控制字符次数
# # 1) +      -       匹配1次或者对次
# print(fullmatch(r'a+?','a'))
# 2)  *     -       匹配0次或者对次
# print(fullmatch(r'a\\{1,}','a\\\\'))
# 5)贪婪和非贪婪      -       如果匹配次数不确定,匹配的时候分为贪婪和非贪婪两种模式
# a)贪婪:在多种匹配次数都可以匹配成功的时候,贪婪取最多的次数进行匹配
# match(正则表达式,字符串)      -       匹配字符串开头
# r= re.match(r'\d{3}','45565')
# r= re.match(r'\d+','45565')
# print(r)
# 非贪婪:在多种匹配次数都可以匹配成功的时候,贪婪取最少的次数进行匹配:在不确定的匹配次数后面加一个?:+?,*?,??,{m,n}?,{m,}?,{,n}?
# content = '<afafsf>afn4646<fafa>afsfsf<fsf>fefsa'
# r = re.findall(r'<.*?>',content)
# print(r)
# 分支和分组
# 分组:( )        -       用()将正则的部分内容括起来表示一个整体
# 整体控制:
# print(fullmatch(r'(\d{2}[a -z]{3})+ ','45ads45sad56sda'))
# 分支:       -       |
# 正则1|正则2|.....
# print(fullmatch(r'abc(\d{3}|[a -zA-Z]{3})','abc456'))



#重复      -       在正则中用\m来重复他前面第m个匹配到的结果
# print(fullmatch(r'(\d\d)[a -z]\1','12d12'))

# 捕获:       -       在获取捕获结果的时候可以自动或者手动获取某个分组匹配的结果,只有findall具有自动捕获的功能
# content = '<afafsf>afn4646<fafa>afsfsf<fsf>fefsa'
# print(re.findall(r'<(.+?)>',content))
# 检测类符号
# 先匹配,匹配成功后再来看检测类符号所在的位置是否符号相关要求
# 1)\b:检测是否是单词边界(任何可以将两个单词区分开来的符号:空白符号:空白符号,英文标点符号,字符串开头,和字符串结尾)
# content = '<afafsf>afn 4646<fafa>af,sfsf<fsf>fefsa'
# print(re.findall(r'<(.+?)>',content))
# 2)^:检测是否是字符串开头
# 3)$:检测是否是字符串结尾
# 转义符号
# print(fullmatch(r'\d+\.\d+','454.646'))
# print(fullmatch(r'\d+\+\d+','455+455'))
# print(fullmatch(r'\(\d{3}\)','(456)'))
# 补充:除了\开头的特殊符号,其他放在[]中,对应的特殊功能会自动消失
# print(fullmatch(r'[.]','.'))
# r1 = re.split(r"[,。]","窗前明月光,疑是地上霜。举头望明月,低头思故乡。")
# for x in r1:
#     print(x ) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值