"""
RE使用步骤:
1、使用compil将表示正则的字符串编译为一个pattern对象
2、通过pattern对象提供一系列方法对文本进行查找匹配结果,一个match对象
3、最后使用match对象提供的属性和方法获得信息,根据需要进行操作
"""
import re
'''
# 查找数字
# r表示字符串不转义
p = re.compile(r'\d+')
# 在字符串中进行查找,按照规则p制定的正则进行查找
# 返回结果None表示没有找到,否则会返回match对象
m = p.match("one12twothree33456four78")
print(m)
'''
# 查找数字
# r表示字符串不转义
"""
p = re.compile(r'\d+')
# 在字符串中进行查找,按照规则p制定的正则进行查找
# 返回结果None表示没有找到,否则会返回match对象
# 参数3,6表示在字符串中查找范围
m = p.match("one12twothree33456four78",3,6)
print(m)
"""
# 上述代码说明的问题
# 1,match可以输入参数表示起始位置
# 2。查找到的结果只包含一个,表示第一个进行匹配成功的内容
# 分成两组,组之间用空格分割
# I 表示忽略掉大小写
"""
p = re.compile(r'([a-z]+) ([a-z]+)',re.I)
m = p.match("I am really love wangxiaojing")
print(m)
print(m.start(0))
print(m.end(0))
print(m.group(0))
"""
# 查找
# - search(str,[,pos[,endpos]]):在字符串中查找匹配,pos和endpos表示起始位置
# findall:查找所有
# finditer:查找,返回一个iter结果
"""
p = re.compile(r'\d+')
m = p.search("one12two34three567four")
print(m.group())
rst = p.findall("one12two34three567four")
print(type(rst))
print(rst)
"""
# sub替换
# sub(rep1,str[,count])
"""
p = re.compile(r'(\w+) (\w+)')
s = "hello 123 wang 456 xiaojing, i love you"
rst = p.sub(r'Hello world',s)
print(rst)
"""
# 匹配中文
# 大部分中文内容表示范围是[u4e00-u9fa5],不包括全角标点
"""
title = u'世界 你好,hello moto'
p = re.compile(r'[\u4e00-\u9fa5]+')
rst = p.findall(title)
print(rst)
"""
# 贪婪和非贪婪
# 贪婪:尽可能多的匹配,(*)表示贪婪匹配
# 非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪
# 正则默认使用的是贪婪匹配
title = u'<div>name</div><div>age</div>'
p1 = re.compile(r"<div>.*</div>")
p2 = re.compile(r"<div>.*?</div>")
m1 = p1.search(title)
print(m1)
m2 = p2.search(title)
print(m2)