Python学习笔记8:标志库之正则表达式

Python拥有强大的标准库。从现在起,开始学习标准库中提供的一些常用功能。

首先看正则表达式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容。

例如:要从一个字符串中找出所有的数字,我们可以这样做:

import re
str = "int2str"
m = re.search("[0-9]",str)
print(m.group(0))

输出:2

re.search()接收两个参数,第一个正则表达式,是匹配条件。

re.search()如果从第二个参数是目标字符串。

返回一个对象m,通过m.group()查看搜索到的结果;没有找到,则返回None。

常用函数:

m = re.search(pattern, string)搜索整个字符串,直到发现符合的子字符串。

m = re.match(pattern, string)从头开始检查字符串是否符合正则表达式。必须从字符串的第一个字符开始就相符。

对于返回的m, 我们使用m.group()来调用结果。

str = re.sub(pattern, replacement, string)在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用另一字符串replacement替换。

返回替换后的字符串str。

re.split()根据正则表达式分割字符串, 将分割后的所有子字符串放在一个表(list)中返回

re.findall()根据正则表达式搜索字符串,将所有符合的子字符串放在一给表(list)中返回

正则表达式:

1)单个字符:

.          任意一个字符

a|b        字符a或字符b

[afg]      a或者f或者g的一个字符

[0-4]      0-4范围内的一个字符

[a-f]      a-f范围内的一个字符

[^m]       不是m的一个字符

s         一个空格

S         一个非空格

d         [0-9]

D         [^0-9]

w         [0-9a-zA-Z]

W         [^0-9a-zA-Z]

2)重复

紧跟在单个字符之后,表示多个这样类似的字符

*         重复 >=0 次

+         重复 >=1 次

?         重复 0或者1 次

{m}       重复m次。比如说 a{4}相当于aaaa,再比如说[1-3]{2}相当于[1-3][1-3]

{m, n}    重复m到n次。比如说a{2, 5}表示a重复2到5次。小于m次的重复,或者大于n次的重复都不符合条件。

例如:

[0-9]{3,5}       9678

a?b              b

a+b              aaaaab

3) 位置

^         字符串的起始位置

$         字符串的结尾位置

例如:

正则表达 相符的字符串举例
不相符字符串

^ab.*c$ abeec
cabeec

4)返回控制

有可能对搜索的结果进行进一步精简信息。比如下面一个正则表达式:

output_(d{4})

该正则表达式用括号()包围了一个小的正则表达式,d{4}。 这个小的正则表达式被用于从结果中筛选想要的信息(在这里是四位数字)。

这样被括号圈起来的正则表达式的一部分,称为群(group)。

我们可以m.group(number)的方法来查询群。group(0)是整个正则表达的搜索结果,group(1)是第一个群……

import re
m = re.search("output_([0-9]{4})", "output_1986.txt")
print(m.group(0),m.group(1))

输出:

(‘output_1986‘, ‘1986‘)

我们还可以使用(?P<name>...)为group命名,以便更好地使用m.group查询:

import re
m = re.search("output_(?P<year>[0-9]{4})", "output_1986.txt")
print(m.group("year"))

输出:1986

坚持每天都能学一点新东西,好了,今天就先到这里了。

时间: 2025-01-02 13:24:47

Python学习笔记8:标志库之正则表达式的相关文章

Python学习笔记5(字符串与正则表达式)

1.字符串 1.1字符串的格式化 #格式化语法 "%s" % str1 "%s %s" % (str1,str2) #格式化字符串 str1 = "version" num = 1.0 format = "%s" % str1 print (format) format = "%s %d" %(str1, num) print (format) #使用字典格式化字符串 print ("%(vers

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

Python学习笔记——正则表达式

今天把之前学的正则表达式好好总结总结. 一.元字符 . :  .表示可以匹配任意一个字符 \d  :  \d表示可以匹配任意一个数字 \D  : \D表示可以匹配任意一个非数字 \s  :  \s表示可以匹配任意一个空白字母 \S : \S表示可以匹配任意一个非空白字母 \w : \w表示可以匹配任意一个字符 \W: \W表示可以匹配任意一个非字符 []  : []表示可以匹配括号中的任意的一个字符  例:[abc] , [a-z] , [^ab] ^  : ^表示只匹配字符串的开始部分    

python &nbsp; 学习笔记 (核心)

python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[0],x[-1]指最后一个字符,x[2:4]取子串, '''hello''' #hello三引号会保留文本输入时的换行符制表符等不需要转义,用于多行原样输入保存 'hello'+'world' #字符串拼接,'hello'*2 #字符串重复 help(fun) #帮助,help(module.met

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

python 学习笔记 6 -- 异常处理

当你的程序中出现某些 异常的 状况的时候,异常就发生了.例如,当你想要读某个文件的时候,而那个文件不存在.或者在程序运行的时候,你不小心把它删除了. 那么如果你是在IDE中运行,一个错误发生,异常会被打引出来,这便是未处理异常:当异常发生时,如果没有代码去关注和处理它,这些异常会传给置在Python中的缺省处理,他会输出一些调试信息并且终止运行.如果是在IDE中,这不是什么大事,但是如果是Python程序运行中的异常,它会导致整个程序终止,对于这些情况可以使用异常来处理. 1.try..exce

python 学习笔记 13 -- 常用的时间模块之time

Python 没有包含对应日期和时间的内置类型,不过提供了3个相应的模块,可以采用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具 *    datetime 模块为日期.时间以及日期时间值提供一个更高层接口.datetime 中的类支持算术.比较和时区配置. *    calendar 模块可以创建周.月和年的格式化表示.它还可以用来计算重复事件.给定日期是星期几,以及其他基

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python