【编程】Python3 正则表达式使用笔记

前言

Python 从1.5版本开始使用re模块来处理正则表达式。
我们可以使用“re模块”或“re.compile方法”来创建正则表达式对象(re.RegexObject),然后通过调用相应方法来处理字符数据。(关于正则表达式语法的相关内容,可以参考这篇文章,本文不再赘述)

 1 # 使用re模块直接调用相应方法处理正则表达式
 2 re.match()
 3 
 4 # 使用compile方法创建正则表达式对象,调用相应方法处理正则表达式
 5 RegexObject = re.compile()
 6 RegexObject.match()
 7 
 8 #当正则表达式成功匹配后,会返回一个MatchObject对象,可以通过调用以下方法获取匹配结果
 9 group()     获得一个或多个分组匹配的字符串
10 groups()    从第1个分组开始,将匹配到的所有字符串以元组的形式返回
11 start()     获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引)
12 end()       获取分组匹配的子串在整个字符串中的结束位置
13 span()      返回 (start(group), end(group))

功能函数

re.compile(pattern, flags)
用于编译正则表达式,生成一个正则表达式对象

1 #参数:
2 pattern:    一个字符串形式的正则表达式
3 flags:      可选,表示匹配模式,比如忽略大小写,多行模式等
4 
5 #示例
6 obj = re.compile("123")
7 strr = obj.match("123a456").group()
8 print(strr)    #123
View Code

re.match(pattern, string, flags=0)
从字符串的起始位置开始匹配,如果不是起始位置匹配成功的话,返回none。

1 #参数
2 pattern:   正则表达式
3 string:    要匹配的字符串
4 flags:     可选,表示匹配模式,比如忽略大小写,多行模式等
5 
6 #示例
7 strr = re.match("123", "123a456").group()
8 print(strr)    #123 (只能从字符串头部开始匹配,否则返回none)
View Code

re.search(pattern, string, flags=0)
从整个字符串开始匹配,返回第一个成功匹配的结果

1 #参数
2 pattern:   正则表达式
3 string:    要匹配的字符串
4 flags:     可选,表示匹配模式,比如忽略大小写,多行模式等
5 
6 #示例
7 strr = re.search("abc", "123abc456abc").group()
8 print(strr)    #abc (有多个符合时,只返回第一个匹配的结果)
View Code

re.findall(pattern, string, flags=0)
从整个字符串开始匹配,将成功匹配的所有子串用列表返回,如果匹配失败返回空列表。

 1 #参数
 2 pattern:   正则表达式
 3 string:    要匹配的字符串
 4 pos:       可选参数,指定字符串的起始位置,默认为0
 5 endpos:    可选参数,指定字符串的结束位置,默认为字符串长度
 6 
 7 #示例
 8 strr = re.findall("abc", "123abc456abc")
 9 print(strr)    #['abc', 'abc'] (有多个符合时,返回所有匹配的结果)
10 
11 obj = re.compile("abc")
12 strr = obj.findall("123abc456abc", 0, 8)
13 print(str2)    #['abc'] (指定起始位置和结束位置后,只有第一个abc能成功匹配)
View Code

re.finditer(pattern, string, flags=0)
从整个字符串开始匹配,将成功匹配的所有子串用一个迭代器返回,如果匹配失败返回空迭代器。

1 #参数
2 pattern:   正则表达式
3 string:    要匹配的字符串
4 flags:     可选,表示匹配模式,比如忽略大小写,多行模式等
5 
6 #示例
7 it = re.finditer("abc", "123abc456abc")
8 for strr in it:
9 print(strr.group())    #abc abc
View Code

re.sub(pattern, repl, string, count=0, flags=0)
从整个字符串开始匹配,并使用指定字符串替换成功匹配的结果

 1 #参数
 2 pattern:   正则表达式
 3 repl:      用于替换的字符串(也可以是一个函数)
 4 string:    用于查找后被替换的原始字符串
 5 count:     可选,成功匹配后要替换的次数,默认0表示替换所有的匹配结果
 6 flags:     可选,表示匹配模式,比如忽略大小写,多行模式等
 7 
 8 #示例
 9 strr = re.sub("abc", "", "123abc456abc")
10 print(strr)    #123456
View Code

re.split(pattern, string, maxsplit=0, flags=0)
从整个字符串开始匹配,用成功匹配的子串对整个字符串进行分割,分割结果用列表返回。

 1 #参数
 2 pattern:   正则表达式
 3 string:    要匹配的字符串
 4 maxsplit:  可选,分隔次数,maxsplit=1 分隔一次,默认为0,不限制次数
 5 flags:     可选,表示匹配模式,比如忽略大小写,多行模式等
 6 
 7 #示例
 8 strr1 = re.split("abc", "123abc456abc")
 9 strr2 = re.split("abc", "123abc456abc", 1)
10 print(strr1) #['123', '456', '']
11 print(strr2) #['123', '456abc']
View Code

参考链接

https://www.runoob.com/python3/python3-reg-expressions.html

posted @ 2021-01-05 00:00  SunsetR  阅读(89)  评论(0编辑  收藏  举报