正确使用正则表达式

'''
正则表达式的使用
'''

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())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值