import re
ret = re.findall('w\w{2}l', 'hello world')
print(ret)
ret = re.findall('alex', 'delfffalexdfkjggggalex.1123')
print(ret)
# 元字符
# .:通配符
a = re.findall('w..l', 'hello world') # .只能代替一个字符
print(a)
# b = re.findall('w..l','hello w\nld') # 不能匹配换行符,\t可以匹配
# print(b)
# ^:以什么开始
# a = re.findall('^h...o', 'hjasdflhello')
# print(a)
# $:以什么结尾
# b = re.findall('a..x$', 'hafddfdalexauix')
# print(b)
# *:重复匹配
# a = re.findall('a.*li', 'fjkafsdklalexlifasdfjkl')
# b = re.findall('ab*','bcccc')
# print(a,b)
# +:[1,+00]1个字符串到无穷
# ret = re.findall('ab+', 'kjldfah')
# print(ret)
# ret1 = re.findall('a+b', 'aaaabhghf')
# ? [0,1]匹配?前面的字符0次或者1次
# ret = re.findall('a?b', 'aaaabhghabfb')
# print(ret)
# {}加数字代表匹配多少次{}前面的字符串
# ret = re.findall('a{5}b', 'vaaaaaab')
# print(ret)
#
# ret1 = re.findall('a{1,3}b', 'aaaab') #贪婪匹配-取最大的个数
# print(ret1)
'''
结论:*等于{0,正无穷}
+等于{1,+oo}
?等于{0,1}
{3}等于{3,+oo}
'''
# 字符集[]
# ret=re.findall('a[c,d,e, ]x', 'aex')
# print(ret)
#
# ret1=re.findall('[a-z]','adx')
# print(ret1)
# []字符集:取消元字符的特殊功能(\ ^ -这些除外)
# ^放在[]里面:取反
# ret3=re.findall('[w,*]','awdx*')
# print(ret3)
# ret4=re.findall('[^4,5]', 'iu12tyA5i4,uS')
# print(ret4)
# \ 反斜杠后面跟元字符去除特殊功能,
# \ 反斜杠后面跟普通字符实现特殊功能
# print(re.findall('\d{11}', 'fauisdlhf31264723124')) #匹配11个数字
#####################################
# re的另外一个方法search,匹配出第一个满足条件的结果
# ret = re.search('s.b', 'fjadfkjdfsdbdfsab')
# print(ret)
# print(ret.group())
# \ 反斜杠的困扰
# 与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用"
# 编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在" \
# 正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样匹配
# 一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
#
# import re
# ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})', 'weeew34ttt123/ooo')
# print(ret.group())
# print(ret.group('id'))
# print(ret.group('name'))
# 1.findall():所有结果都返回到一个列表里
# 2.search():返回匹配到的第一个对象(object),对象可以调用group()返回结果
# 3.match():只在字符串开始匹配
# 4.split():按照指定的字符串分割
# ret = re.split('k', 'djksal')
# ret1 = re.split('[j,s]', 'djksal')
# ret2 = re.split('[j,s]', '1sdjksal')
# ret3 = re.split('[j,s]','sdjksal')
# print(ret,ret1,ret2,ret3)
# 5.sup()三个元素,匹配字符串,需要替换成的字符串,需要被匹配的字符串
ret = re.sub('a..x', 's..b', 'hfjasalexdhf')
print(ret)
# 6.compile()
# obj = re.compile('\.com')
# print((obj.findall('fhasjd.comfajld')))