Python学习笔记(3)
正则:
使用正则表达式需要引入 re模块 , 使用步骤如下:
compile(正则,模式) 方法:生成pattern实例;模式可传 re.I 或 re.M 等
re.I 不区分大小写,忽略大小写
re.M 多行匹配,影响 ^ 和 $
import re #定义正则表达式, 编译成Pattern实例 p = re.compile('a.b') #使用实例,获得匹配结果 test = re.match(p, 'a3b') print(test.group(0)) # a3b
正则表达式字符含义(列举部分,更多查询文档):
. 表示除了换行符\n 外的任意字符
\ 表示转义,改变后面一个字符的原来意义
* 表示前一个字符可以为0个或者多个
+ 表示前一个字符至少为1个或者多个
? 表示前一个字符为0个或者1个
^ 表示以某个字符开头
$ 表示以某个字符结尾
{m, n} 表示匹配次数, 表示最少m次。表示最多n次
[] 表示字符集中任意字符 例如 [123456798]
() 表示分组, 例如 (abc){2}
预定义字符集:
\d : 表示 0 ~ 9
\D : 表示除了 0 ~ 9 的所有字符,非数字
\s : 表示任何空白字符
\S : 表示除了空白字符的任意字符
\w : 表示 [0-9A-Za-z]
\W : 表示除了 [0-9A-Za-z] 即特殊字符
\A: 表示以 某个字符开头,等价于 符号 ^
\Z : 表示以某个
\b :表示单词边界
匹配函数:
match(pattern, string) 方法: 从字符串起始位置开始匹配,如果不是起始位置匹配成功的话,返回none ,如果匹配成功,返回Match 对象
#定义正则表达式, 编译成Pattern实例 p = re.compile('ab') #使用实例,获得匹配结果 test = re.match(p, 'sabc') print(test.group()) # none
search (pattern, string) 方法: 对字符串进行整体匹配,找到第一个匹配的值后返回,后续的不再进行匹配。,返回Match 对象
#定义正则表达式, 编译成Pattern实例 p = re.compile('ab') test = re.search(p, 'sabcabab') print(test.group()) # ab
findall(pattern,string): 以列表形式输出所有匹配的字符串,查找全部,返回列表
import re #定义正则表达式, 编译成Pattern实例 p = re.compile('ab',re.M) print(re.findall(p, 'abcdefgab')) # ['ab', 'ab']
finditer(pattern, string): 已迭代器形式返回所有匹配的字符串,查找全部,返回迭代器
p = re.compile('ab',re.M) m = re.finditer(p, 'abcdefgab') print(next(m).group()) # ab
sub(pattern, repl, string, count = 0): 根据正则替换字符串中指定字符 ; repl 表示替换的新字符,string表示要被替换的字符串, count表示替换的次数,不传默认为 0 ,替换全部
import re text = '1a2a3a4a5a6a7a' p = re.compile('a') new = re.sub(p, '', text) print(new) #132467
匹配函数传参:
pattren 表示匹配的正则表达式 ;
string 表示需要匹配的字符串 ;
flags 表示标志位,用于控制正则表达式的匹配方式,如 是否区分大小写、多行匹配等;可选
Match对象方法:
group() 方法: 返回匹配成功的字符串,不传参或传0 的情况下,返回匹配的所有字符串;当匹配的正则有分组时,依次传参1,2,3输出对应的正则组所匹配的字符
groups() 方法: 以元组形式返回所匹配的各个字符串,以分组形式, 没有分组的情况下返回()
start() 方法: 返回开始匹配的字符位置
end() 方法: 返回结束匹配的字符位置
span() 方法: 以元组形式同时返回开始匹配和结束匹配的位置
p = re.compile('ab') test = re.search(p, 'sabcabab') print(test.group()) # ab print(test.groups()) # () print(test.start()) # 1 print(test.end()) # 3 print(test.span()) # (1, 3)
p = re.compile('(ab)(cd)(ef)') test = re.search(p, 'abcdefg') print(test.group()) # abcdef print(test.group(1)) # ab print(test.group(2)) # cd print(test.groups()) # ('ab', 'cd', 'ef')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现