Python20天
1 re模块 2 正则表达式
模块和实际工作的关系
time模块和时间是什么关系 time模块标准的使用时间
re模块和正则表达式的关系
有了re模块就可以在Python语言中操作正则表达式了
正则表达式 重点
什么是正则表达式:一套规则-匹配字符串的规则
能做什么:
1 检测一个输入的字符串是否合法-----web 开发项目,表单验证
用户输入一个内容的时候,我们要提前做检测
能够提高程序的效率并且减轻服务器的压力
2 从一个大文件中找到所有符合规则的内容-----日志分析 、爬虫
能够高效的从一大段文字中快速找到符合规则的=内容太
正则规则
所有的规则中的字符就可以刚好匹配到字符串中的内容
字符组 【】 描述的是一个位置上能出现的所有可能性
接受范围,可以描述多个范围,连着写就可以了
[ abc] 一个中括号只表示一个字符位置
匹配a或b或 c
[0-9] 根据ASCII码进行范围的比对 只能从ASCII数字从小到大顺序
[A-Z]
[a-z]
[a-zA-Z]大小写 -左边是ASCII码小的 -右边是ASCII码大的
[0-9a-z]
[0-9a-zA-Z]
不能[a-Z]这样就是从大到小了 不成功
在正则表达式中能够帮助我们表示匹配的内容的符号都是正则中的元字符
[0-9] ---> \d 表示匹配一位任意的数字 digit
[0-9a-zA-Z_]--->\w 表示匹配的数字字母下划线 word标识符
空白(空格、tab、enter)------> ( |\t|\n)---> \s表示所有空白(空格、tab、enter)
元字符 -----匹配内容的规则
[ ]
\ d
\ w
\ s
\ t
\ n
\ W 非数字字母下划线
\D 非数字
\ S 非空白
[\d]
[\d\D] [\w\W] [\s\S] 匹配所有
. 表示匹配除了换行符之外的所有
[ ] 匹配字符组中的字符
[^ ]匹配除了字符组中字符的所有字符
[^\d]匹配所有的非数字
[^1]匹配所有的非数字
^ 匹配一个字符串的开始
$ 匹配一个字符串的结尾
a表达式 | b表达式 匹配A或B表达式中的内容,如果匹配A成功了就不在匹配B。
所以 如果两个规则有重叠部分,总是把长的放在前面
() 匹配括号内的表达式 表示一个组 约束| 描述内容的范围问题
记忆元字符:都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容
\d \w \s \t \n \D \W \S
[ ] [ ^ ] .
^ $
( ) |
2 量词 同一个东西匹配都少次的
{n} 表示匹配n次
{n,} 表示匹配至少n次
{n,m} 表示至少匹配N次,至多M次
? 表示匹配0次或1次 {0,1}
+ 表示1次或多次 {1,}
* 表示0次或更多次{0,}

匹配0次?
匹配整数 \d+
匹配小数 \d+\.\d+
整数或小数:\d+\.?\d*
分组的作用:\d+(\.\d+)?标准的匹配小数或整数
匹配手机号码:1[3-9]\d{9}
判断用户输入的内容是否合法,如果用户输入的对就能查到结果,如果输入的不对就不能查到结果
^1[3-9]\d{9}$
从一个大文件中找到所有符合规则的内容
1[3-9]\d{9}
贪婪匹配
在量词范围允许的情况下,尽量多的匹配内容
回溯算法
。*X 表示匹配任意字符,任意多次数,遇到最后一个X停下来
非贪婪(惰性)匹配
元字符 量词 ?
爬虫中非常多最多用法: 。*?X 表示匹配任意字符,任意多次数,但是一旦遇到X就停下来
转义符
原本有特殊意义的字符,到了表达它本身的意义的时候,需要转移
有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义
[. ]
[() . * + ?] 所有的内容在字符组中会取消他的特殊意义
[a \ - c ] - 在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面\最后面
总结:
元字符
\d \s \w \t \n \D \S \W
[ ] [^ ] .
^ $
( ) |
量词
{} 表示任意的次数,任意的次数范围,至少多少次
? + *
贪婪和非贪婪匹配
总是在量词范围内尽量多匹配---贪婪
总是在量词范围内尽量少匹配--- 惰性
。* ?X 匹配任意内容任意次数,遇到X就停止
。+* X 匹配任意内容任意次数至少1次,遇到X就停止
转义符
。 有特殊的意义 取消特殊的意义\。
取消一个元字符的特殊意义有两种方式
1 在这个元字符前面加 \
2 对一部分字符生效,把这个元字符放在字符组里
【。 ( + ? *)】
re模块-------Regex 正则表达式
自动化运维--开发
爬虫

浙公网安备 33010602011771号