Python学习笔记【week04day1下】正则表达式

本文是Python正则表达式学习笔记。介绍了正则表达式是用于描述搜索模式的字符串,Python的re模块提供了Perl风格的正则表达式功能。还详细讲解了匹配单个字符、边界匹配、匹配多个字符的规则,以及re.compile、re.match等常用正则函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  • 正则表达式其实就是一个字符串,使用这个字符串来进行描述某个语法规则搜索的模式
  • python 自1.5版本增加了re模块,它提供Perl风格的正则表达式模式
  • “re 模块”使 Python 语言拥有全部的正则表达式功能。
  • import re
  • re模块提供了与这些方法功能完全一致的函数,这些函数使用一个模式的字符串作为他们的第一个参数。

匹配单个字符

. 匹配除换行符以外的任意字符
[] 字符集合,表示匹配[]中任意一个字符
[0-9] 表示匹配任意的数字
[a-z] 表示匹配所有小写字母
[A-Z] 表示匹配所有的大写字母
[0-9a-zA-Z_] 表示匹配数字字母下划线
[^0-9] 非数字。^在[]括号中表示“脱字节” ([^0-9] 这里表示脱离数字,即非数字)
\d 表示匹配数字,效果同[0-9]
\D 表示匹配非数字,效果同[^0-9]
\w 表示匹配数字字母下滑线,效果同[0-9a-zA-Z_]
\W 表示匹配非数字字母下滑线,效果同[^0-9a-zA-Z_]
\s 表示匹配空白符效果同[ \r\n\f\t]
\S 表示非匹配空白符效果同[^ \r\n\f\t]

边界匹配

^ 行首匹配,从每一行的开始进行匹配
$ 行尾匹配,匹配每一行的结束
\A 匹配字符串的开始,与^的区别是,即使在re.M的模式下,也不会匹配其他的行首
\Z 匹配字符串的结束,与$的区别是,即使在re.M的模式下,也不会匹配其他的行尾
\b 匹配单词的边界 \b写在左边匹配左边界,写在右边匹配右边界
\B 匹配单词的非边界 写在左边,左边界不匹配,写在右边右边界不匹配
在这里插入图片描述
在这里插入图片描述

匹配多个字符

(xyz) 将括号中的内容作为一个整体来进行匹配
x?匹配0个或者1个x 尽可能少的匹配 (懒惰匹配
x* 匹配0个或者多个x 贪婪匹配,尽可能多的匹配 (贪婪匹配
x+ 匹配至少一个,贪婪匹配,尽可能多的匹配
x{n} 匹配确定的n个x
x{n,} 匹配至少n个x 贪婪匹配
x{n,m} 匹配至少n个最多m个x

e.g.

在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述

常用正则函数

import re

re.compile()

  • re.compile(pattern,flags)
    参数一:正则表达式
    参数二:标志位(用于修改正则表达式的匹配方式,如是否区分大小写,多行匹配等等)
    功能:将正则表达式编译成一个正则对象然后返回。调用的时候调用正则对象即可。

在这里插入图片描述

re.match()

  • re.match(pattern,string,flags)
    参数一:正则表达
    参数二:string
    参数三:标志位
    功能:对string从字符串开始进行匹配,若匹配的上则返回匹配成功的对象,若匹配不上则返回None
    注意:这并不是一个完全匹配,若匹配成功之后,string有剩余仍然匹配成功,若要完全匹配,可以在正则的末尾添加$即可

在这里插入图片描述

re.search()

  • re.search(pattern,string,flags)
    参数一:正则表达式
    参数二:字符串
    参数三:标志位
    功能:以指定的正则格式在string进行查找若找到则直接返回第一匹配成功的对象,不再继续匹配。若找不到返回None
    在这里插入图片描述

re.findall()

  • re.findall(pattern,string,flags)
    功能:以指定的正则表达式去string中进行匹配,把所有匹配的结果作为list返回。若没有匹配上则返回空列表。

re.finditer()

  • re.finditer(pattern,string,flags)
    功能:以指定的正则表达式去string中进行匹配,把所有匹配的结果作为迭代器返回.

re.split()

  • re.split(pattern,string,maxsplit,flags)
    功能:以指定的正则对string进行切片,并且将切片后的结果作为列表返回。
    (maxsplit:指定最大切片次数,若不指定,全部切片)

re.sub()

  • re.sub(pattern,repl,string,count)
    功能:将匹配到的字符以指定的repl进行替换并且返回替换后的结果
    (count:指定替换次数,若不指定则默认全部替换)
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值