一.re.match函数
描述
- 从字符串的起始位置匹配一个模式,如果不成功,match()就返回None
方法和参数
- re.match(pattern, string, flags=0)
- pattern:匹配的正则表达式
- string:要匹配的字符串
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
返回值
- 成功:匹配的对象
- 失败:None
实例
import re
str1 = 'Delta is good boy'
result = re.match('Delta', str1)
print(result) # <re.Match object; span=(0, 5), match='Delta'>
二.re.serch函数
描述
- 扫描整个字符串并返回第一个成功的匹配
语法和参数
- re.search(pattern, string, flags=0)
- pattern:匹配的正则表达式
- string:要匹配的字符串
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
实例
import re
str1 = 'Delta is good boy'
result = re.search('good', str1)
print(result) # <re.Match object; span=(9, 13), match='good'>
三.re.serch和re.match的区别
- re.serch从字符串的所有位置匹配
- re.match从字符串的开头开始匹配
四.re.compile 函数
描述
- 用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用
语法和参数
- re.compile(pattern[, flags])
- pattern:一个字符串形式的正则表达式
- flags:可选,表示匹配模式,比如忽略大小写,多行模式等
实例
import re
# 待查找的字符串
str1 = 'Dieta is a 19-year-old boy'
# 创建一个正则表达式对象
parten1 = re.compile(r'(\d+)-(\w+)-(\w+)')
# 对目标字符串进行查找
result = re.search(parten1, str1)
print(result.group()) # 19-year-old
五.检索和替换
描述
- 替换字符串中的匹配项
方法和参数
- re.sub(pattern, repl, string, count=0, flags=0)
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
实例
-
常规使用
import re str1 = '2021-08-12' str2 = re.sub('-', '', str1) print(str2) # 20210812
-
repl参数是一个函数
import re def func(s): print(s) i = s.group() return i*2 str1 = '1111-222-33' str2 = re.sub('(\d*)', func, str1) print(str2) # 11111111-222222-3333
六.findall函数
描述
在字符串中找到正则表达式所匹配的所有子串
返回值
- 列表
方法和参数
- findall(string[, pos[, endpos]])
- string:待匹配的字符串。
- pos:可选参数,指定字符串的起始位置,默认为 0。
- endpos:可选参数,指定字符串的结束位置,默认为字符串的长度。
实例
import re
str1 = '111,222,333,444'
parten1 = re.compile(r'\d+')
result = parten1.findall(str1)
print(result) # ['111', '222', '333', '444']
七.re.finditer函数
描述
- 在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回
语法和参数
- re.finditer(pattern, string, flags=0)
- pattern:匹配的正则表达式
- string:要匹配的字符串
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
实例
import re
str1 = '111,222,333,444'
result = re.finditer(r'\d+', str1)
for i in result:
print(i.group(), end='-') # 111-222-333-444-
八.re.split函数
描述
- 按照能够匹配的子串将字符串分割后返回列表
方法和参数
- re.split(pattern, string[, maxsplit=0, flags=0])
- pattern:匹配的正则表达式
- string:要匹配的字符串。
- maxsplit:分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
实例
import re
result = re.split(',', '111,222,333,444')
print(result) # ['111', '222', '333', '444']