MOOC课程学习笔记
课程链接:https://www.bilibili.com/video/BV1ME411E7jE?p=1
Re库主要功能函数
函数 | 功能 | 返回值 |
---|---|---|
re.search() | 在一个字符串中搜索匹配正则表达式的第一个位置 | match对象 |
re.match() | 从一个字符串的开始位置起匹配正则表达式 | match对象 |
re.findall() | 搜索字符串,返回全部能匹配的子串 | list列表 |
re.split() | 将一个字符串按照正则表达式匹配结果进行分割 | list列表 |
re.finditer() | 搜索字符串,返回匹配结果 | 迭代类型,迭代元素是match对象 |
re.sub() | 在一个字符串中替换所有匹配正则表达式的子串 | 替换后的string字符串 |
re.compile() | 将正则表达式的字符串形式编译成正则表达式对象 | 正则表达式对象 |
实例 (以查找邮政编码为例)
search函数
# search函数 向后找第一个符合条件的字符串
match = re.search(r'[1-9]\d{5}','BIT 221745 221746')
if match:
print(match.group(0)) # 输出 221745
match函数
# match函数 从“第一字符”开始匹配 返回第一个符合条件的字符串
match = re.match(r'[1-9]\d{5}','BIT 221745') # 匹配错误,因为第一个是B而不是[1-9]
match = re.match(r'[1-9]\d{5}','221745 221746 BIT') # 匹配成功
if match:
print(match.group(0)) # 输出 221745
findall函数
# findall函数 搜索所有符合条件的字符串 以列表形式返回
match = re.findall(r'[1-9]\d{5}','BIT 221745 221746')
print(match) # 输出 ['221745', '221746']
split函数
# split函数 按照匹配结果进行分割 返回列表类型
# maxsplit:最大分割数,剩余部分作为最后一个元素输出
match = re.split(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747')
print(match) # 输出 ['ABC ', ' DEF ', ' GHI ', '']
match = re.split(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747',maxsplit=1)
print(match) # 输出 ['ABC ', ' DEF 221746 GHI 221747']
match = re.split(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747',maxsplit=2)
print(match) # 输出 ['ABC ', ' DEF ', ' GHI 221747']
finditer函数
# finditer函数 搜索字符串 返回一个匹配结果的迭代类型(match对象)
match = re.finditer(r'[1-9]\d{5}','ABC 221745 DEF 221746 GHI 221747')
for m in match:
if m:
print(m.group(0))
'''
输出结果:
221745
221746
221747
'''
sub函数
# sub函数 在一个字符串中替换所有匹配正则表达式的子串 返回替换后的子串
# 这个例子中将邮政编码全部替换成000000
match = re.sub(r'[1-9]\d{5}','000000','ABC 221745 DEF 221746 GHI 221747')
print(match) # 输出 ABC 000000 DEF 000000 GHI 000000
compile函数
# compile函数 将字符串编译成正则表达式对象
regex = re.compile(r'[1-9]\d{5}') # 经过一次编译 可多次对此正则表达式进行使用
match = regex.search('ABC 221745 DEF 221746 GHI 221747')