python18

?取消分组优先
'''
re模块 ''' import re phone=input("please input your phone:") if re.match('^1[3456789][0-9]{9}',phone):
#^1[^012][0-9]{9}
print(True) else: print(False)

 

'''
re模块
match从头开始匹配
'''
import re
ret=re.match('a','aw3rd323rdfft4f')
print(ret)
print(ret.group())

 

'''
re模块
search发现一个就结束
'''
import re
ret=re.search('3','aw3rd323rdfft4f')
print(ret)
print(ret.group())
'''
re模块
split 使用正则关系进行分割
'''
import re
ret=re.split('3','aw3rd323rdfft4f')
print(ret)
'''
re模块
sub 使用正则匹配替换
'''
import re
ret=re.sub('3','H','aw3rd323rdfft4f')
print(ret)
'''
re模块
subn 使用正则匹配替换,包括替换了几次
'''
import re
ret=re.subn('3','H','aw3rd323rdfft4f')
print(ret)
'''
re模块
compile 使用编译正则
'''
import re
obj=re.compile('3')#得到正则对象
ret=obj.search('23414f')
print(ret.group())


print(ret)

 

'''
re模块
finditer 使用匹配多个使用生成器
'''
import re
ret=re.finditer('\d+','345efr345r43333234r')#得到正则对象
for i in ret:
    print(i)

print(ret)

 

 

 

'''
re模块
search 使用编译正
获取括号中的分组
?:在括号中取消分组
'''
import re
ret=re.search('1(?:[^012])(\d{9})','1431234567813212345678')#得到正则对象

print(ret.group())
print(ret.group(1))
print(ret.group(2))







print(ret)

'''
re模块
findall 使用编译正
获取括号中的分组,组成列表
?:在括号中取消分组
'''
import re
ret=re.findall('www.(.*?).com','www.baidu.com www.sina.com')#得到正则对象

print(ret)

 

'''
re模块
split 使用编译正
获取括号中的分组,组成列表
?:在括号中取消分组
增加括号可以保留匹配项
''' import re ret=re.split('\d+www.(.*?).com','12www.baidu.com132www.sina.com')#得到正则对象 print(ret)

 获取匹配内容

'''
re
search 通过(?P<tag_name>\w+)对分组起名字
(?P=tag_name)再次调用
'''
import re
ret=re.search("<(?P<tag_name>\w+)>(?P<content>\w+)</(?P=tag_name)>","<h1>hello</h1>")
print(ret.group('tag_name'))
print(ret.group('content'))
print(ret.group())

 

'''
\1取别名
默认组() 顺序,再次出现时根据排序以\1 或 \2表示匹配规则,无须括号(等同于复制规则)
'''
import re
ret = re.search(r"<(\w+)>(\w+)</\1>\2","<h1>hello</h1>hello")
#如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致
#获取的匹配结果可以直接用group(序号)拿到对应的值
print(ret.group(1))
print(ret.group(2))  #结果 :<h1>hello</h1>
print(ret.group())  #结果 :<h1>hello</h1>

数值匹配

'''
匹配正负数,包括小数,整数
'''
import re

ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret) #['1', '2', '60', '40', '35', '5', '4', '3']
ret=re.findall(r"-?\d+\.\d*|(-?\d+)","1-2*(60+(-40.35/5)-(-4*3))")
print(ret) #['1', '-2', '60', '', '5', '-4', '3']
ret.remove("")#移除空格的列表元素
print(ret) #['1', '-2', '60', '5', '-4', '3']

匹配测试

 

1、 匹配一段文本中的每行的邮箱
'''
partn='\w+@\w+([.]\w+)+'
'''
2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’;
'''
partn='^\d{4}-([0][1-9]{1}|1[12])-([012][0-9]|3[012])$'

 

posted @ 2019-05-07 21:55  jiuchen  阅读(559)  评论(0)    收藏  举报