1、什么是正则表达式
正则表达式是一种进行数据筛选的表达式
2、原子
原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子。常见的原子类型有:
a、普通字符作为原子
b、非打印字符作为原子
c、通用字符作为原子
d、原子表
实战操作:
导入模块:
import re
import re
>>>pat="yue"
>>>url="http://yum.iqianyue.com"
>>>result1=re.search(pat,url)#search函数从某个字符串中寻找符合规则的内容 表达式相当于内容规则 第一个参数对应规格,第二个参数是总的字符串
>>>print(result1)
<_sre.SRE_Matchobject; span=(16, 19), match='yue'>
>>>url2="http://dasdasdas.com"
>>>result2=re.search(pat,url2)
>>>print(result2)
None
b、非打印字符作为原子
import re
\t #制表符 用于对齐
\n # 换行符
\w #通用字符 能够匹配任意的字母数字下划线
\d #匹配任意一十进制数字
\W #匹配与\w相反的字符 匹配除了字母数字下划线以外任意字符
\s #匹配任意一个空白字符
\D #匹配除了十进制数字外的任意字符
原子表:
pat="pyth[jsz]n"# 匹配pyth[中间或是j或是s或是中的一个]n
>>>string="dgsfastgvepythjnagkle"
>>>result5=re.search(pat,string)
>>>print(result5)
<_sre.SRE_Matchobject; span=(10, 16), match='pythjn'>
3、元字符
*: “s*” 匹配0次1次或多次前面字符 "ssss"
?:"s?" 匹配0次或1次 "ss" "s"
+ :"s+" 匹配1次或多次 ,不匹配0次
. : 匹配除了换行符外所有字符
{3} : 匹配前面的原子恰好出现了3次 t{3}
{n,}: 前面的原子至少出现了n次
{n,m}:前面的原子至少出现了n次 至多出现了m次
()提取中间的内容
4、模式修正符
模式修正符,即可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整等功能。
I :忽略大小写
M :进行多行匹配
L:本地化识别匹配
U:根据Unicode 字符 解析字符
S: 指的是点也 匹配换行符
import re
pat1="python"
pat2="python"
string="dgdfdskdjasgPythonhkloe"
rst1=re.search(pat1,string)
rst2=re.search(pat2,string,re.I)
print(rst1)
print(rst2)
5、贪婪模式与懒惰模式
贪婪模式就是尽可能多的去匹配 懒惰模式是尽可能少的去匹配
import re
pat1="p.*y"#贪婪模式
pat2="p.*?y"#懒惰模式
string="dgdfdskdjasgpyddadadythonhykloe"
rst1=re.search(pat1,string)
rst2=re.search(pat2,string)
print(rst1)
print(rst2)
<_sre.SRE_Matchobject; span=(12, 27), match='pyddadadythonhy'>
<_sre.SRE_Matchobject; span=(12, 14), match='py'>
6、正则表达式函数
正则表达式函数有:
re.match()函数 从字符串头开始匹配,如果字符串首字母不匹配 直接返回None
re.search()在给定字符串从左向右进行搜索 只能给出一个结果
re.sub()函数
全局匹配函数:
re.compile(pat).findall(string)
7、常见正则匹配实例
匹配.com 或 .cn网址 匹配电话号码
import re
pat1="[a-zA-Z]+://[^\s]*[.com|.cn]"
string='
rst1=re.compile(pat1).findall(string)
print(rst1)
8、爬取csdn的一个课程 ,并自动提取出qq群
import re
importurllib.request
pat="QQ:(.*?)"
data=urllib.request.urlopen("https://edu.csdn.net/courses").read()
rst1=re.compile(pat).findall(str(data))
print(rst1)
9、提取出版社信息