16正则表达式,元字符,量词,转移符

 

# 正则表达式 

  场景 1 检测字符串是否符合规则  

  场景2从一大段文字中找到符合规则的

# 字符组  []   描述的是一个字符位置上的内容规则

# [012345]
# [0-5]
# [0-9]
# [9-0]  不能从大到小来规定范围
# 字符组内所有的范围都是根据ascii码来的

# 数字 # [0-9]

# 字母 # 小写 [a-z] # 大写 [A-Z] # 大小写 [A-Za-z]

# 数字和大小写字母[A-Z0-9a-z]

# 大小写字母+下划线 # [A-Z0-9a-z_]

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

 

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

# 字符组之外的其他带有特殊规则的元字符:
# [0-9] \d 匹配任意一个数字 digit
# [A-Z0-9a-z_] \w 标识符
# \n 匹配回车换行
# \t 匹配制表符 table
# 空格 本身匹配 空格
# \s 匹配所有的空白
# \b 匹配一个单词的边界
# 反义词
# \W 除了数字字母下划线之外的所有
# \D 除了数字之外的所有
# \S 除了空白之外的所有

# . 匹配换行符之外的所有字符

# 匹配所有 :[\D\d] [\W\w] [\S\s] # 非字符组 :[^123]除了123之外的都匹配


# 开始符和结束符 # ^ 永远在一个规则的最开始 # $ 永远在一个规则的最末尾 # ^和$ 规定了这个字符串的长度,并且在这个长度内的内容


 

# | 或的概念
# 123|456     #123或456

# www.baidu.com
# www.oldboy.com

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


# 总结
# \d \w \s \n \t \D \W \S \b
# [],[^]
# ^ $
# |   或 永远把相对长的规则放在左侧
# ()
# .

 

# 量词 

在量词的范围内尽可能多的匹配
# {n} 表示出现n次
# {n,} 表示至少出现n次
# {n,m} 表示出现n-m次
# ? 表示匹配0次或1次
# + 表示匹配1次或多次
# * 表示匹配0次或多次

# 匹配整数
# [1-9]\d*|0

# 匹配小数
# \d+\.\d+

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

 

# 元字符 量词
# 匹配的是一个字符的内容
# 量词 表示的是匹配的次数

# 在量词范围内尽可能多的匹配 - 贪婪匹配

# 正则表达式 匹配身份证号码
# 15位
# 首位不能为0
# ^[1-9]\d{14}$

# 18位
# 首位不能为0,末尾可能是x和数字
# ^[1-9]\d{16}[\dx]$

# 合起来
# ^([1-9]\d{16}[\dx]|[1-9]\d{14})$
# [1-9]\d{14}(\d{2}[\dx])?

 

# 转义
# 在测试的网页上写的是什么
# 就直接复制过来
# 然后在字符串外面加上一个r
# r'\\n' --> r'\n'
# t 't'
# \t  \本身具有转义作用,相当于改变了t本来的面目
# \\  \本身具有转义作用,\\相当于转义了\的特殊作用,相当于普通的一个'\'

# 贪婪匹配 :默认的 尽可能多匹配
# 惰性匹配 :需要我们手动设置的 尽可能少匹配
# a.* 以a开头的任意一个字符串都可以被匹配出来
# a.*? 非贪婪
# a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止

 

posted @ 2019-03-21 14:13  401561993  阅读(260)  评论(0编辑  收藏  举报