【学习笔记】最简单通俗易懂的正则表达式教程
在线验证网站:https://regex101.com/
学习参考:白月黑羽/《实战Python网络爬虫》
一.限定符
1. .
匹配除了换行符之外的任何单个字符,任何一个字开头,紧跟一个色字
代码:
r的含义:raw string原始字符串
compile产生一个Pattern对象,可以调用各种方法,对正则表达式的匹配方式
findall返回一个列表
2. ?
表示前面的子表达式0次或1次
最后一行,猴子逗号后面没有其它字符了,但是?表示匹配1次或0次, 所以最后一行也选中了一个逗号字符。
3. *
匹配前面的子表达式任意次,包括0次
*代表代表前面这个任意字符出现任意次,0也算任意次
对比:逗号本身代表一个字符,逗号后面没有字符,点‘.’一定要匹配上一个字符
注:中文逗号“,”
以绿开头,色出现任意次数的
4. +
匹配前面的子表达式一次或多次,不包括0次
*与+对比:+至少匹配一次
5. {}
表示前面的字符匹配指定的次数
注意:英文花括号,否则不生效
6. []
方括号表示括号内可选
[abc]
可以匹配 a, b, 或者 c 里面的任意一个字符。等价于 [a-c]
。
[a-c]
中间的 - 表示一个范围从a 到 c。
.在方括号内仅表示.失去特殊含义
^在方括号内依旧表示非
7. ()
括号称为正则表达式的组选择
8. |
表示匹配其中之一
二.对元字符的转义
反斜杠\为转义字符
注:此处*和+皆可
反斜杠后面接一些字符,表示匹配 某种类型
的一个字符。
\d 匹配0-9之间任意一个数字字符,等价于表达式 [0-9]
\D 匹配任意一个不是0-9之间的数字字符,等价于表达式 [^0-9]
\s 匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [\t\n\r\f\v]
\S 匹配任意一个非空白字符,等价于表达式 [^ \t\n\r\f\v]
\w 匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9_]
缺省情况也包括 Unicode文字字符,如果指定 ASCII 码标记,则只包括ASCII字母
\W 匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9_]
反斜杠也可以用在方括号里面,比如 [\s,.] 表示匹配 : 任何空白字符, 或者逗号,或者点
三.起始结尾位置和单行多行模式
^表示匹配文本的起始位置
正则表达式可以设定 单行模式
和 多行模式
如果是 单行模式
,表示匹配 整个文本
的开头位置。(默认)
如果是 多行模式
,表示匹配 文本每行
的开头位置。(re.M或者re.MULTILINE)
$
表示匹配文本的 结尾
位置。
如果是 单行模式
,表示匹配 整个文本
的结尾位置。
如果是 多行模式
,表示匹配 文本每行
的结尾位置。
四.切割字符串
正则表达式 [;,\s]\s*
指定了,分割符为 分号、逗号、空格 里面的任意一种均可,并且 该符号周围可以有不定数量的空格。
注:\s为空白字符
五.正则处理函数
1.re.match函数
从字符串的开头开始匹配一个模式,如果成功匹配,就返回一个匹配成功的对象,否则返回None。
使用方式:re.match(pattern,string,flags=0)
2.re.search函数
扫描整个字符串并返回第一次成功匹配的对象,如果匹配失败,就返回None。
使用方式:re.search(pattern,string,flags=0)
3.re.findall函数
用于获取字符串中所有匹配的字符串,并以列表的形式返回。
使用方式:re.findall(pattern,string,flags=0)
4.re.sub函数
用于替换字符串中的匹配项,如果没有匹配的项,则返回没有匹配的字符串。
使用方式:re.sub(pattern,string,flags=0)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!