# -*-coding:utf8-*-
"""
=========================================
author: Lujier time: 2019/10/18
E-mail: 2327994109@qq.com
==========================================
"""
# re知识点
import re
# a = "aaaaddn122xmvsmcnas13221099612ascz15934815828xcv0000"
# ===========================1. 匹配单字符================
# 定义一个查找的规则
""" search之后结果是一个对象,且只会找到第一个就停止寻找
# 若未匹配到,返回结果是None
"""
# p = '132'
# print(re.search(p, a))
""" group获取到匹配到的内容"""
# print(re.search(p, a).group())
# 1. 匹配11位数字
# p_1 = r'\d{11}'
# print(re.search(p_1, a))
# print(re.search(p_1, a).group())
# 2. 匹配以1开头,第2位是3-9的11位数字
# p_2 = r'1[3-9]\d{9}'
# print(re.search(p_2, a))
# print(re.search(p_2, a).group())
""" findall返回所有符合规则的字符串,结果以列表形式存储"""
# print(re.findall(p_2, a))
#
# p_3 = '\D'
# print(re.findall(p_3, a))
# ============================= 2. 匹配出现次数(数字)===================
# # 匹配3个数字的内容
# p_4 = '\d{3}'
# print(re.findall(p_4, a))
#
# # 匹配4个及其以上数字的内容
# p_5 = '\d{4,}'
# print(re.findall(p_5, a))
#
# # 匹配3-5个数字的内容,贪婪原则,如果既满足5又满足3个,那么就取5个
# p_6 = '\d{3,5}'
# print(re.findall(p_6, a))
# # 匹配3-5个数字的内容,?取消贪婪模式(如果满足5又满足3个,那么就取3个)
# # 匹配规则中,涉及到数量范围时{m,} {m,n},*, + , 会涉及到贪婪模式
# p_7 = '\d{3,5}?'
# print(re.findall(p_7, a))
# # 0次或无限次,匹配0次,就''表示
# p_8 = '\d*'
# print(re.findall(p_8, a))
#
# # 匹配1次以上的数字
# p_8 = '\d+'
# print(re.findall(p_8, a))
#
# # 出现0次或者1次
# p_8 = '\d?'
# print(re.findall(p_8, a))
# ============================= 3. 匹配边界 ===================
# # 以py开头匹配,如果能匹配到,接口返回:['py'],若为匹配到,返回[]
# # p_001 = '^py'
# # print(re.findall(p_001, str_2))
#
# # 以py结束匹配,如果能匹配到,接口返回:['py'],若为匹配到,返回[]
# # p_002 = 'py$'
# # print(re.findall(p_002, str_2))
# # ============================= 4. 匹配分组 ===================
# # 单词边界匹配
# # 匹配单词以py结尾,返回结果以列表形式存储
# p_003 = r'\bpy'
# print(re.findall(p_003, str_2))
#
# # 匹配单词,且字母长度2个以上
# p_003 = r'\b[a-z]{3,}'
# print(re.findall(p_003, str_2))
# ============================= 4. 匹配分组 ===================
str_3 = 'python123 hellopy py hello world 111python000 #hello# python #hel#1'
# # p_1 = 'python'
# # print(re.findall(p_1, str_3))
# # # 匹配python中的th,提取中间内容
# # p_2 = 'py(th)on'
# # print(re.findall(p_2, str_3))
# # # group(1) 提取第一个分组中匹配的内容
# # print(re.search(p_2, str_3).group(1))
#
# # 提取匹配#结束,#开始的内容
p_3 = '#(.+?)#'
# print(re.findall(p_3, str_3))
# res = re.search(p_3, str_3).group(1)
# 替换1次匹配的内容
data = re.sub(p_3, '1234', str_3, count=1)
print(data)
# 替换2次匹配的内容
# p_3 = '#(.+?)#'
# TestDatas = re.sub(p_3, 'java替换成功', str_3, count=2)
# print(TestDatas)