python3中的正则表达式
一、什么是正则?
正则就是一套规则,或者语法。
二、正则的作用?
正则就是匹配 或者 查找某一些规则的字符串数据。
三、 常用的场景?
- 验证:判断输入的邮箱,手机号是否合法等。
- 获取某一段数据,可以使用正则获取网页的照片。
四、 re模块操作。
在Python中需要通过正则表达式对 字符串 进行匹配的时候,可以使用一个模块,名字为re
re模块的使用过程:
#coding=utf-8
# 导入re模块
import re
# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
五、匹配单个字符。
六、 匹配多个字符。
六、 开头和结尾。
小结:这个常用在以什么开头或者以什么结尾的需求情况下使用比较多!
实例:
2.除了指定字符以外都匹配
七、匹配分组
匹配内容相关正则表达式:
七、re模块的高级用法
不常用 search:匹配到一个字符
findall:查找多个字符。
sub:替换数据。
split:根据多个标识符进行分割数据。
八、python中的贪婪与非贪婪
在python中默认的是贪婪模式!
贪婪:总是尝试匹配尽可能多的字符;
非贪婪:总是尝试匹配尽可能少的字符。
在”*”,”?”,”+”,”{m,n}”后面加上?,使贪婪变成非贪婪。
实例:
>>> s="This is a number 234-235-22-423"
>>> r=re.match(".+(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
'4-235-22-423'
>>> r=re.match(".+?(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
'234-235-22-423'
>>>
说明:
—–1、正则表达式模式中使用到通配字,那它在从左到右的顺序求值时,会尽量“抓取”满足匹配最长字符串,
—-2、在我们上面的例子里面,“.+”会从字符串的启始处抓取满足模式的最长字符,其中包括我们想得到的第一个整型字段的中的大部分,“\d+”只需一位字符就可以匹配,所以它匹配了数字“4”,而“.+”则匹配了从字符串起始到这个第一位数字4之前的所有字符。
九、r的作用
>>> import re
>>> mm = "c:\\a\\b\\c"
>>> mm
'c:\\a\\b\\c'
>>> ret = re.match("c:\\\\a",mm).group()
>>> print(ret)
c:\a
>>> ret = re.match(r"c:\\a",mm).group()
>>> print(ret)
c:\a
说明:
Python中字符串前面加上 r 表示原生字符串,数据里面的反斜杠不需要进行转义,针对的只是反斜杠
Python里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
建议: 如果使用使用正则表达式匹配数据可以都加上r,要注意r针对的只是反斜杠起作用,不需要对其进行转义