特点:有固定的的格式,如:HTML, XML, JSON
示例 :图片、音频、视频,这类数据一般都存储为二进制
1、创建编译对象 :p = re.compile("正则表达式")
2、对字符串匹配 :r = p.match("字符串")
3、获取匹配结果 :print(r.group())
1、match(s) :字符串开头的第1个,返回对象
2、search(s):从开始往后找,匹配第1个,返回对象
3、group() :从match或search返回对象中取值
4、findall():所有全部匹配,返回一个列表
. 匹配任意字符(不能匹配\n)
\d 数字
\s 空白字符
\S 非空白字符
[...] 包含[]内容 :A[BCD]E --> ABE ACE ADE
\w 字母、数字、_
* 0次或多次
? 0次或1次
+ 1次或多次
{m} m次
{m,n} m-n次 AB{1,3}C --> ABC ABBC ABBBC
贪婪匹配(.*) :在整个表达式匹配成功的前提下,尽可能多的匹配*
非贪婪匹配(.*?) :在整个表达式匹配成功的前提下,尽可能少的匹配*
import re
#解释 :先按照整体匹配出来,然后再匹配()中的
# 如果有2个或者多个(),则以元组的方式取显示
s = "A B C D"
p1 = re.compile(‘\w+\s+\w+‘)
print(p1.findall(s))
# [‘A B‘,‘C D‘]
p2 = re.compile(‘(\w+)\s+\w+‘)
# 第1步 :[‘A B‘,‘C D‘]
# 第2步 :[‘A‘,‘C‘]
print(p2.findall(s))
p3 = re.compile(‘(\w+)\s+(\w+)‘)
# 第1步 :[‘A B‘,‘C D‘]
# 第2步 :[(‘A‘,‘B‘),(‘C‘,‘D‘)]
print(p3.findall(s))
<div class="animal">
<p class="name">
<a title="Rabbit"></a>
</p>
<p class="contents">
Small white rabbit white and white
</p>
</div>
p = re.compile(‘<div class="animal".*?title="(.*?)">.*?contents">(.*?)</p>‘,re.S)
re.search()方法扫描整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None。
与re.match()方法不同,re.match()方法要求必须从字符串的开头进行匹配,如果字符串的开头不匹配,整个匹配就失败了;
re.search()并不要求必须从字符串的开头进行匹配,也就是说,正则表达式可以是字符串的一部分。
re.search(pattern, string, flags=0)
content = res.text
result = re.search(‘img‘, content)
print(result)
# result
<re.Match object; span=(472, 475), match=‘img‘>
原文:https://www.cnblogs.com/harlenfan/p/13279219.html