Python re库

本文介绍了Python的re库,用于处理字符串的正则表达式操作。内容包括导入re库,正则的基本概念,以及re库的方法,如match。重点讲述了正则匹配对象的group()、groups()和groupdict()方法的用法。
摘要由CSDN通过智能技术生成

import re    #导包

#正则模块,针对字符串
#正则本身其实就是一种小型的,高度专业化的编程语言,底层是由C语言编写的匹配引擎执行,效率高,速度快

1、正则内容

**特殊字符**:
    \w  数字,字母,下划线
    \W  非数字字母下划线    
    \b  单词边界
    \B    
    \s  空格
    \S  非空格    
    \d  数字
    \D  非数字
    \t  制表符(Tab键)
    .   除了换行以外的任意字符
    \r  回车 
    
    ^ 匹配开头,在[]中表示不匹配
    $ 匹配结尾
    
**量词**:
    {n} 匹配n次
    {n,m} 匹配最少n次,最多m次
    +   匹配1次或多次
    *   匹配0次或多次
    ?   匹配0次或1次
    
**分组**:
    ()
    (x|y)   匹配x或者y
    x(?:) 匹配x但不记住
    x(?=y) 匹配x并且后面必须是y
    x(?!y) 匹配x并且后面必须不是y
    
    对于匹配,匹配的结果会保存到\1\2\3。。。中,目前应用到re.sub替换的字符串中

或:
    [xyz] 匹配x或y或z
    [x|y] 匹配x或|或y,这个其实不准确,应该用\|转义写
    
    eg:[0-9] 匹配0-9中任意一个
        [a-z] 同理
        [A-Z]
        [a-zA-Z0-9]
        [\u4e00-\u9fa5]
        [A-z] 中间有 [ \ ] ^ _ , 这几个字符

2、python正则内容

  • (?P ) #?P<>定义组里匹配内容的key(键),<>里面写key名称,值就是匹配到的内容(只对正则函数返回对象的有用)

  • 如果返回了匹配的对象,则对象方法为:

group()
#获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来,有参取匹配到的第几个如2

groups()
#获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果

groupdict()
#获取模型中匹配到的分 组结果,只拿出匹配到的字符串中分组部分定义了key的组结果

re库方法

#3、search()函数
#search,浏览全部字符串,匹配第一符合规则的字符串,浏览整个字符串去匹配第一个,未匹配成功返回None
#search(pattern, string, flags=0)
    # pattern: 正则模型
    # string : 要匹配的字符串
    # falgs : 匹配模式


# 4、match()函数
# 匹配的是从字符串开始的位置开始匹配,而search()匹配的是字符串全局匹配第一个合规则的字符串,参数和search()一样


# 5、findall()函数(以后常用)
# findall(pattern, string, flags=0)
    # pattern: 正则模型
    # string : 要匹配的字符串
    # falgs : 匹配模式
# 浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中,未匹配成功返回空列表
# 注意:一旦匹配成,再次匹配,是从前一次匹配成功的,后面一位开始的,也可以理解为匹配成功的字符串,不在参与下次匹配


# 6、split()函数
# 根据正则匹配分割字符串,返回分割后的一个列表
# split(pattern, string, maxsplit=0, flags=0)
    # pattern: 正则模型
    # string : 要匹配的字符串
    # maxsplit:指定分割个数
    # flags  : 匹配模式


# 7、 sub()函数
# 替换匹配成功的指定位置字符串
# sub(pattern, repl, string, count=0, flags=0)
    # pattern: 正则模型
    # repl   : 要替换的字符串
    # string : 要匹配的字符串
    # count  : 指定匹配个数
    # flags  : 匹配模式


# 8、subn()函数
# 替换匹配成功的指定位置字符串,并且返回替换次数,可以用两个变量分别接受
# subn(pattern, repl, string, count=0, flags=0)
    # pattern: 正则模型
    # repl   : 要替换的字符串
    # string : 要匹配的字符串
    # count  : 指定匹配个数
    # flags  : 匹配模式

#============Test======================
print('-------------------------')
str = "hello alex bcd alex lge alex acd 19"
regex1 = r'a\w+\b'  			#正常测试
regex2 = r'a(\w+)'  			#一个分组
regex3 = r'(a)((\w+)(e))'   	#多个分组,分组套分组
regex4 = r'(?P<n1>\w+)'   		#定义匹配内容里面的key(键),<>里面写key的名称,值就是匹配的内容
regex5 = r'a(?P<n1>\w+).*(?P<n2>\d)'	 #多个分组key

regex7 = r'a(?:\w+)'
regex8 = r'a(?=l)\w+'
regex9 = r'a(?!l)\w+'

regex10 = r'h\w+'   			#用于match匹配


#search_Test
res = re.search(regex1,str)
print('res1:',res,'==>group:',res.group(),'==>groups:',res.groups(),'==>groupdicts:',res.groupdict())
res = re.search(regex2,str)
print('res2:',res,'==>group:',res.group(),'==>groups:',res.groups
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值