首页 > 代码库 > Python学习笔记8:标志库之正则表达式
Python学习笔记8:标志库之正则表达式
Python拥有强大的标准库。从现在起,开始学习标准库中提供的一些常用功能。
首先看正则表达式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容。
例如:要从一个字符串中找出所有的数字,我们可以这样做:
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)是第一个群……
(‘output_1986‘, ‘1986‘)
我们还可以使用(?P<name>...)为group命名,以便更好地使用m.group查询:
首先看正则表达式(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
坚持每天都能学一点新东西,好了,今天就先到这里了。
Python学习笔记8:标志库之正则表达式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。