正则表达式

import re


# ret=re.findall('w\w{2}l','hello world')
# print(ret)

# re.findall('alex','ss')  #后者字符串中匹配符合前者规则的字符串

# 2元字符

#通配符.只能代指一个字符(除转义字符)
# ret=re.findall('w..l','hello world')
# print(ret)

#^ $
# ret=re.findall('^h.l','hello world') #以..为开头
# print(ret)
#
# ret=re.findall('.d$','hello world') #以..为结尾
# print(ret)


#*重复匹配[0,无穷]
ret=re.findall('ab*','kjldfhall')
print(ret)      #['a']
#+:[1,无穷]
ret=re.findall('ab+','kjldfhall')
print(ret)      #[]
#次数针对符号前一个字符
ret=re.findall('a+b','aaaaabkjldfhabll')
print(ret)   #['aaaaab', 'ab']


#?[0,1]
ret=re.findall('a?b','aaaaabkjldfhabll')
print(ret)      #['ab', 'ab']


#{}
ret=re.findall('a{1,4}b','aaaaabkjldfhabll') #{1,}等价{1,无穷}
print(ret)      #'aaaab', 'ab']

# 正则表达式默认为贪婪匹配,加上?变为惰性匹配

#[]  -表范围 ^表非
ret=re.findall('a[cde]x','aex')    #  匹配 c, d,e中的一个,不用“,”分开
print(ret)  #['aex']

# \
#\反斜杠后元字符去除特殊功能
#反斜杠后普通字符实现特殊功能

print(re.findall(r'I\b','I anm LI')) #['I', 'I']
print(re.findall('I\b','I anm LI')) #[]


#匹配出第一个满足条件的结果
ret=re.search('b.j','aaaaabkjldfhabll')
print(ret)  #<_sre.SRE_Match object; span=(5, 8), match='bkj'>
print(ret.group())      #bkj

ret=re.findall('\\\\','abc\d')
print(ret)
#['\\']  原因是re模块和python有各自的转义体系,一个'\'在python编译器中需要两个\\,建议使用Python的r前缀,就不用考虑转义的问题了:

ret=re.findall('\bblow','blow')
print(ret)  #[]

ret=re.findall(r'\bblow','blow')
print(ret)  #['blow']

ret=re.search('(?P<id>\d{3})/(?P<name>\w{3})','weeee34iuoi123/000')   #?P<id>为命名格式,后面为匹配格式
print(ret.group())
print(ret.group('id'))
print(ret.group('name'))
# 123/000
# 123
# 000
#正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group),注意到group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串。

# #正则表达式的方法:
# 1 findall():所以结果都返回都一个列表里
# 2search():返回一个对象(object),对象可以调用group()返回结果
# 3match(): 只在字符串开始匹配
# 4split():
#5sub:re.sub替换字符串中每一个匹配的字串后返回替换后的字符串
#6complie
#findall()以列表形式返回所有,search()返回第一个
# match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配;
#
# 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。
obj=re.compile('\.com')#加re.S可匹配换行符
ret=obj.findall('fhasjd.comdasd')
print(ret)
#['.com']
贪婪模式与非贪婪
content='Hello 1234567 World-this is a regex demo'
result=re.match('^He.*(\d+).*demo$',content)
print(result.group(1))#[7]
result=re.match('^He.*?(\d+).*demo$',content)
print(result.group(1))#[1234567]
正则出现错误程序可能卡死

 






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值