day_16 正则表达式

# re模块是用来操作正则表达式的

# 什么是'正则'
# 能做什么事情
# ------》
# 字符串的规则
# 给字符串定一个规则
# 来帮助我们
#1.检测某一段字符串是否符合规则
#2,从一大段文字中将符合规则的匹配出来
# 爬虫
# 只和字符串相关

#正则应用:在注册也输入的内容是否合法
#不过不判断,也会传送非法内容,就会占用资源

# 规则:
# 字符组
# 元字符
# 量词
# 简单的字符串的筛选和匹配


# 规则
# 待检测一段字符串

# 字符组[]的概念: 描述的是一个字符位置上的内容规则
#[0123456]
# [0-8]
# [4-6]
# [9-6] 错误
# 他们的大小根据ASCII码值来排序

# 数字 [0-9]
# 大写字母[a-z]
# 小写字母[A-Z]
# 加数字大小写[0-9A-Za-z] 里面无顺序

# 在字符组当中 - 是有特殊意义的,如果我们想取消这个横杠的特殊意义 [1-9]
#需要使用作为转移符

#d 元字符
# 字符组之外的其他带有特殊字符的方法 [0-9] == d
# 如果匹配[1-9] 就不能用d
# [0-9A-Za-z_] w表示标识符
# 空格本身匹配空格
# tab制表符
# 回车换行符
# 所有以上特殊东西 s
# 匹配一个单词的边界  hello world o 以o结尾 o以o开头
#反义词
# W 除了字母数字下划线所有
# D 除了数字的所有
# S 除了空白的所有
# . 除了换行符之外的所有字符



# d w s( )
# D W S

# 匹配所有 : [Dd] [Ww] [Ss]
# 非字符组 : [^123] 除了123之外都匹配

#开始符和结束符
# ^ $
# ^hello hello hello hello ->>>>> hello

# ^hello$ 什么也不匹配 除非上面下面一样的
# h^hello 永远不存在这种的


# 或的概念
# 123|456 竖杠左右边的是一个全集, 永远把相对长的放在左侧

# 分组的概念
# www.(baidu|oldboy).com

# 量词:尽可能多的匹配
# ^1[3-9]d{9}$
# {n} 出现n次
# {n,} 至少出现n次
# {n,m} 表示出现 n-m次
# ?
# + 至少有一个
# * 全部匹配也可以,如果一个都没有,也算一次

# 匹配整数[1-9]d*|0
# 匹配小数 d+.d+
# 匹配小数或者整数 (d+.d+)|(d+.d+)

  # findall 优先显示分组中的内容
  # split 保留被切掉的分组内的内容
  # search 可以通过组的索引取值
  # 取消分组的特殊行为(?:正则)



例题:
# 1、匹配整数或者小数(包括正数和负数)
# 2、匹配年月日日期 格式2018-12-6
# 3、匹配qq号
# 4、长度为8-10位的用户密码 : 包含数字字母下划线
# 5、匹配验证码:4位数字字母组成的
# 6、匹配邮箱地址
 
原文地址:https://www.cnblogs.com/CNHK1949/p/10571134.html