# 正则表达式
# 字符组[字符]
# 元字符:
# \w \d \s 数字字母下划线 数字 空白符
# \W \D \S 非……
# \w\W……表示所有字符
# . 匹配出换行符所有字符 (在python中re.S可以把包括换行符)
# ^ $ 匹配字符串的开头和结尾(必须写在表达式两端)
# ()分组,正则表达式里:对多个字符组整体量词约束时用
# 在python中:分组有优先
# findall
# split
# | 从左到右匹配只要匹配上了就不继续匹配,所以应该把长的放在前面
# [^] 除了字符组内的其他都匹配
# 量词
# * 0~
# + 1~
# ? 0~1
# {n} n
# {n,} n~
# {n,m} n~m
# 转义问题 在python中加r
# import re
# re.findall(r'\b,\n,\d','\n,\d')
# 惰性匹配
# 量词后面加?表示惰性匹配
# .*?x 一直取,直到匹配到x
# re模块
# import re
# re.findall('\d','asdf12',re.S)
# 返回值:列表 列表中是所有匹配到的项
# search
# ret = re.search('\d(\w)','asdf123',re.S)
# ret = re.search('\d(?P<name>\w)','asdf123',re.S)
# 找整个字符串,遇到匹配的就返回,遇不到就返回None
# 如果有返回值,ret.group()就可以取到值
# 取分组中的内容:ret.group(1) / ret.group('name')
# match
# 从头开始匹配,匹配上就返回,匹配不上就返回None
# 如果匹配上了,group取值
# 分割 split
# 替换 sub 和 subn
# 返回一个迭代器 finditer
# compile 编译:正则表达式很长且要多次使用
import re
# 匹配标签
# ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>")
# #还可以在分组中利用?<name>的形式给分组起名字
# #获取的匹配结果可以直接用group('名字')拿到对应的值
# print(ret.group('tag_name')) #结果 :h1
# print(ret.group()) #结果 :<h1>hello</h1>
# ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")
# #如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致
# #获取的匹配结果可以直接用group(序号)拿到对应的值
# print(ret.group(1))
# print(ret.group()) #结果 :<h1>hello</h1>
# 取整数
# ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
# print(ret) #['1', '2', '60', '40', '35', '5', '4', '3']
# ret.remove('')
# print(ret)
# 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']
# 匹配一段文本中的每行的邮箱
# http://blog.youkuaiyun.com/make164492212/article/details/51656638
# ret = re.search('//(?P<name>.*?)/','http://blog.youkuaiyun.com/make164492212/article/details/51656638')
# print(ret.group(1))
# 1、 匹配一段文本中的每行的邮箱
# http://blog.youkuaiyun.com/make164492212/article/details/51656638
#
# 2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’;
#
# 分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、
# 一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$
#
# 3、 匹配qq号。(腾讯QQ号从10000开始) [1,9][0,9]{4,}
#
# 4、 匹配一个浮点数。 ^(-?\d+)(\.\d+)?$ 或者 -?\d+\.?\d*
#
# 5、 匹配汉字。 ^[\u4e00-\u9fa5]{0,}$
#
# 6、 匹配出所有整数
转载于:https://www.cnblogs.com/Mr-Feng/p/10836729.html