day25

正则表达式

# 正则表达式
# re模块

# re模块本身只是用来操作正则表达式的
# 和正则本身没关系

# 正则表达式 是一种规则 匹配字符串的规则

1.为什么要有正则表达式?

1.1 匹配字符串

一个人的电话号码

一个人的身份证号

一台机器的ip地址

1.2 表单验证

验证用户输入的信息是否准确

11位 全数字 1开头 第二个数3-9之外的数

银行卡号

1.3 爬虫

从网页源码中获取一些链接、重要数据

 

2.正则规则(元字符,量词)

2.1 第一条规则

本身是哪一个字符,就匹配字符串中的哪一个字符

2.2 第二条规则

字符组[字符1字符2],一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上

字符组中还可以使用范围

所有的范围都必须遵循ascii码从下到大来指定

[0-9] [a-z] [A-Z]

[0-9] \d 表示所有的数字

d --> d

\d --> \是转义符 转义符转义了d,让d能够匹配所有0-9之间的数

\w 表示 大小写字母 数字 下划线

\s 表示空白 空格 换行符 制表符

\t 匹配制表符

\n 匹配换行符

\D 表示所有的非数字

\W 表示除 数字字母下划线之外的所有字符

\S 表示非空白

. 表示除了换行符之外的任意内容

[] 字符组 :只要在中括号内的所有字符都是符合规则的字符

[^] 非字符组 :只要在中括号内的所有字符都是不符合规则的字符

^ 表示一个字符的开始

$ 表示一个字符的结束

| 表示或,注意,如果两个规则有重叠部分,总是长的在前面,短的在后面

() 表示分组,给一部分正则规定为一组,|这个符号的作用域就可以缩小了

[\d] [0-9] \d 没有区别 都是要匹配一位数字

[\d\D] [\W\w] [\S\s] 匹配所有一切字符

 

2.3 元字符

\d \w \s \t(table) \n(next)

\D \W \S

.

[] [^]

^ $

| ()

 

2.4 量词

{n} 表示只能出现n次

{n,} 表示至少出现n次

{n,m}表示至少出现n次,至多出现m次

 

? 表示匹配0次或1次 表示可有可无 但是有只能有一个 比如小数点

+ 表示匹配1次或多次

* 表示匹配0次或多次 表示可有可无 但是有可以有多个 比如小数点后n位

 

匹配0次

 

匹配任意的2位整数

匹配任意的保留两位小数的数字

匹配一个整数或者小数 \d+.\d+|\d+ \d+.?\d* \d+(.\d+)?

2.5 贪婪匹配和非贪婪匹配

默认贪婪匹配,总是会在符合量词条件的范围内尽量多匹配

\d{7,12}

<html>adljdkjsljdlj</html>

<.+>

非贪婪匹配 :惰性匹配

总是匹配符合条件范围内尽量小的字符串

 

元字符 量词 ? x

表示按照元字符规则在量词范围内匹配,一旦遇到x就停止

 

.*?x 匹配任意的内容任意多次遇到x就立即停止

 

元字符

元字符量词

元字符量词?

 

\d+?x .*?x 爬虫

 

 

身份证号

15位 全数字 首位不为0

18位 前17位全数字 首位不为0 最后一位可能是x和数字

1-9

1-9

[1-9]\d{14}(\d{2}[\dx])?

 

 

元字符

量词

贪婪匹配和非贪婪

 

尝试自己学习正则模块

 

基于listdir完成计算文件夹总大小

1.递归

2.堆栈 递归函数-三级菜单

posted @ 2020-05-26 21:17  投降输一半!  阅读(121)  评论(0编辑  收藏  举报