今日目标:
正则表达式
python高级特性
网络相关的库
|-- requests
正则表达式:
什么是正则表达式(Regular expression):
正则表达式历史:
python如何使用正则:
一般而言,不同的编程都会提供对正则的支持,如java中,字符串对象中,有些方法直接支持正则,也同时提供正则的对应类
python也同样的道理,它为开发者提供了一个专门支持正则的模块 -- re
re模块:
常见方法:
compile()
search()
findall()
finditer()
sub()
split()
match("需要匹配的规则", 文本字符串) # 表示从头匹配
正则表达式:
元字符:
. # 匹配任意符号,除换行符之外(n)
w # 匹配有效符号(大小写字母、数字、_、各国的语言符号(python3)),不匹配特殊符号, 等价于:[a-zA-Z0-9_]
d # 匹配数字0~9 十个数字,等价于 [0123456789]
s # 匹配的空白位 常见的如:空格、t、n等符号
[abcd] # 该位置,必须是abcd中的某个来占位,列举
|-- 匹配数字:[0123456789]、[0-9]
|-- 匹配小写字母:[a-z]
|-- 匹配大写字母:[A-Z]
|-- 有效符号:[a-zA-Z0-9_]
^ # 以什么开头
$ # 以什么结尾
反义符:
W # 匹配特殊符号
D # 匹配非数字
S # 匹配非空白位
[^abcd] # 表示该位不能使用列举中的某个符号
转义符:
在绝多数的编程语言中,字符串 *** 作都是存在转义符, x
为什么在window系统的中,文件系统路径的分隔符是\(本质最后是一个)
正则中呢?
在正则中,反斜杠也存在转义的作用!!!
注意:在python中,如果出现路径等情况,建议使用r"regexp",这种方式,减少转义符多次转义!!
推荐:所有的正则表达式前面,都建议加上r!!!!!
重复(位数):
* # 任意位(0到多位)
+ # 1到多位
? # 表示0或者1,也就是说:可以没有,也可以有,但是有的话,只能是一位
{m} # 表示m位,m是个正整数
{m,} # 表示至少m位,可以更多
{m,n} # 表示范围区间[m, n] (m<=n)
课堂练习:
匹配出openlab的邮箱地址,且@之前有4到20为字符,如59127_ljh@openlab.com
[a-zA-Z0-9_]{4,20}@openlab.com
分组:
多个组合的列举:
正则中,存在了一个|符号,表示的意思或者,多个中筛选
[a-zA-Z0-9_]{4,20}@openlab.(com|org|cn|io)
括号除了在多个组合的列举作用外,还有一个非常重要的作用,就是分组
在正则表达式进行匹配的时候,在匹配完成之后,可以做二次匹配!!!
注意,分组是由括号完成的!!!
如何匹配一个标签:r"?w+>"
贪婪与懒惰:
正则表达式中,如果使用多位匹配,则存在了一个贪婪和非贪婪模式,
贪婪模式:尽可能多的匹配
非太贪婪模式:尽可能少的匹配
贪婪模式 --> 懒惰模式,只需要在位数的后面加上?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)