'''
正则表达式的使用
'''
import re
#通过re模块,将正则表达式编译成模式对象,用模式对象进行匹配
p = re.compile(r'ab+')
temp = p.match('bcdeabc')
#match对象的方法
if None != temp:
print(temp.group()) #返回匹配的字符串
print(temp.start()) #start总是返回0,因为match总是从字符串的起始位置开始匹配
print(temp.end())
print(temp.span()) # 返回一个元祖,表示匹配的位置(开始,结束)
#search返回的同样也是match对象,具有match对象的全部属性
temp1 = p.search('bcdafnabc')
if None != temp1:
print(temp1.group()) #返回匹配的字符串
print(temp1.start()) #返回匹配字符串的起始位置
print(temp1.end())
print(temp1.span()) # 返回一个元祖,表示匹配的位置(开始,结束)
#findall 遍历字符串,返回正则表达式匹配的所有字符串,以列表的方式返回
temp2 = p.findall('abcabbrtjfjabbbsdf')
print(temp2) #['ab', 'abb', 'abbb']
#finditer 遍历字符串,找到正则表达式匹配的所有位置,
#尽量采用finditer,如果字符串很大,匹配到的字符串很多,使用迭代器的效率更高
temp3 = p.finditer('abcabbrtjfjabbbsdf')
print(temp3) #结果是一个迭代器对象 <callable_iterator object at 0x7f79facc1a58>
for each in temp3:
print(each) #迭代器中的每一个对象都是一个match对象
print(each.group())
#还可以使用全局函数match() search() findall() sub()
#在使用频率不高的时候,使用全局函数,不需要编译成模式对象
#并不是没有创建模式对象,只是没有显式的创建。由函数自动创建一个模式对象,并调用相关的函数
# temp4 = re.match(r'ab+','abbbbbcdgjkjhhk')
# temp4 = re.findall(r'ab+','abbbbbcdgjkjhhk')
# temp4 = re.search(r'ab+','abbbbbcdgjkjhhk')
temp4 = re.finditer(r'ab+','abbbbbcdgjkjhhk')
for each in temp4:
print(each.group())
正确使用正则表达式
最新推荐文章于 2023-01-11 23:15:35 发布