首页 > 其他 > 详细

正则表达式

时间:2020-07-10 15:41:21      阅读:67      评论:0      收藏:0      [点我收藏+]

一、数据分类

1、结构化数据

特点:有固定的的格式,如:HTML, XML, JSON

2、非结构化数据

示例 :图片、音频、视频,这类数据一般都存储为二进制

二、正则表达式

1、使用流程

1、创建编译对象 :p = re.compile("正则表达式")
2、对字符串匹配 :r = p.match("字符串")
3、获取匹配结果 :print(r.group())

2、常用方法

1、match(s) :字符串开头的第1个,返回对象
2、search(s):从开始往后找,匹配第1个,返回对象
3、group()  :从match或search返回对象中取值
4、findall():所有全部匹配,返回一个列表

3、表达式

.  匹配任意字符(不能匹配\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

4、示例(贪婪模式和非贪婪模式)

贪婪匹配(.*) :在整个表达式匹配成功的前提下,尽可能多的匹配*

非贪婪匹配(.*?) :在整个表达式匹配成功的前提下,尽可能少的匹配*

5、findall()的分组

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))

6、练习

<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)

Python3 re.search()方法

re.search()方法扫描整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None。

与re.match()方法不同,re.match()方法要求必须从字符串的开头进行匹配,如果字符串的开头不匹配,整个匹配就失败了;

re.search()并不要求必须从字符串的开头进行匹配,也就是说,正则表达式可以是字符串的一部分。

re.search(pattern, string, flags=0)

  • pattern : 正则中的模式字符串。
  • string : 要被查找替换的原始字符串。
  • flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

例如:

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!