正则表达式由字符和操作符构成

. 表示任何单个字符

[]字符集,对单个字符给出取值范围 [abc]或者关系  [a-z]表示

[^abc]表示非这里面的东西 非字符集

* 表示星号之前的字符出现0次或者无限次扩展

+ 表示星号之前的字符出现一次或者无限次扩展

? 表示出现0次或1扩展

| 表示左右表达式人取其一 abc|def

---------------------------------------------------------------------

{m} 扩展前一个字符m次  ab{2}c  abbc

{m,n}扩展前一个字符m-n 次 ab{1,2}c 表示 abc abbc

{:3} 零到三次

^ 匹配字符串开头: ^abc 表示abc且在一个字符串的开头

$ 匹配字符串的结尾 abc$ 表示bac切abc在一个字符串的结尾

()分组标记 内部只能使用 |

\d 等价于[0-9]

\w 等价于字符[A-Za-z0-9]

----------------------------------------------------------------------

经典正则表达式

^[A-Za-z]+$                 由26个字母组成的表达式

^[A-Za-z0-9]+$     由字母与数字构成的字符串

^-?\d+$         匹配任何整数

^[1-9]*[0-9][0-9]*$   表示正整数的字符串

[1-9]\d{5}         6位邮政编码的正则表达式

[\u4e00-\u9fa5]        匹配中文字符

\d{3}-\d{8}|\d{4}-\d{7}  匹配国内电话号码

\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}. 匹配ip地址

re.search()       在一个字符串中搜索匹配正则表达式的第一个位置,返回metch对象

re.match()    在一个字符串的开始位置起匹配正则表达式,返回match对象

re.findall()   搜索字符串,以列表形式返回所有能匹配的字符串

re.split()    将一个字符串按照正则表达式的匹配结果进行分割,返回一个列表

re.finditer()   搜索字符串,返回一个匹配结果的爹地啊类型,每个迭代元素是match象

re.sub()    替换所有匹配的字符串,返回一个字符串

详细使用说明

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

findall 函数参数和search 一样

finditer 同上

pattern 正则表达式

string 原始需要被匹配的字符串

flags 控制查找的标记

标记如下

re.I   忽略大小写

re.M  正则表达式的^操作符能够匹配给定字符串每一行的开始部分

re.S re.DOTALL 正则表达式的.匹配所有的字符 //默认匹配除换行符之外的所有字符

re.split(pattern,string,maxsplit=0,flags=0)

maxsplit 最大分割数,剩余部分作为整体显示出来 (匹配的部分去掉)

re.sub(pattern,repl,string,count=0,flags=0)

repl  替换原字符串的字符串 ,count 最大替换词数

re库的等价用法

rst=re.search(...)   一次性用法

re.compile(pattern,flags=0)

pat =re.compile('')

// pat 成为pattern 对象   可以多次使用

pat.search()

Match 对象类型

if match:

attribute:

  .string 待匹配文本

  .re    使用的pattern

  .pos 匹配开始的位置

  .enpos 匹配结束的位置

  .group(0) 获得匹配后的字符串

  group方法的其他用法如下

>>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
>>> m.group(0) # The entire match
'Isaac Newton'
>>> m.group(1) # The first parenthesized subgroup.
'Isaac'
>>> m.group(2) # The second parenthesized subgroup.
'Newton'
>>> m.group(1, 2) # Multiple arguments give us a tuple.
('Isaac', 'Newton')

.start() 匹配字符串在原始字符串的开始位置

.end()  匹配字符串在原始字符串的结束位置

.span 返回(.start(),.end())   //tuple

贪婪匹配和最小匹配

match=re.saerch(r'PY.*N','PYANBNCNDN')

match.group(0)

匹配长短不同时

默认采用贪婪匹配的方式,即找到最长的符合条件的最长子串

match=re.saerch(r'PY.*?N','PYANBNCNDN')

match.group(0)

*后面加一个?即匹配符合条件的最小的匹配

最小匹配操作符(有操作符可以匹配不同长度时)

*?

+?

??

{m,n}?

正则表达式还是要反斜杠注释的 \\

r'\"view_price\"\:\"[\d\.]*\"'

.":都要注释

{0:^10}

0是format第0个元素,‘排名’

:是引导符号

^是居中对齐

10是槽的设定输出宽度

其余类似

PYTHON网络爬虫与信息提取[正则表达式的使用](单元七)的更多相关文章

  1. PYTHON网络爬虫与信息提取[scrapy框架应用](单元十、十一)

    scrapy 常用命令 startproject  创建一个新的工程 scrapy startproject <name>[dir] genspider    创建一个爬虫         ...

  2. Python网络爬虫与信息提取

    1.Requests库入门 Requests安装 用管理员身份打开命令提示符: pip install requests 测试:打开IDLE: >>> import requests ...

  3. 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...

  4. 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 第一周 Requests库的爬 ...

  5. 第三次作业-Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 过程. 5.写一篇不少于100 ...

  6. Python网络爬虫与信息提取笔记

    直接复制粘贴笔记发现有问题 文档下载地址//download.csdn.net/download/hide_on_rush/12266493 掌握定向网络数据爬取和网页解析的基本能力常用的 Pytho ...

  7. 【学习笔记】PYTHON网络爬虫与信息提取(北理工 嵩天)

    学习目的:掌握定向网络数据爬取和网页解析的基本能力the Website is the API- 1 python ide 文本ide:IDLE,Sublime    Text集成ide:Pychar ...

  8. Python网络爬虫与信息提取(一)

    学习 北京理工大学 嵩天 课程笔记 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.BeautifulSoup框架:解 ...

  9. Python网络爬虫与信息提取(三)—— Re模块

    regular expression / regex / RE 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 ...

随机推荐

  1. 你真的了解cookies吗?

    互联网隐私安全,直接放链接吧,这一篇非常好的文章,详细,全面,专业. http://www.freebuf.com/articles/web/127266.html 浅谈Web客户端追踪 一.   W ...

  2. XML 映射文件

    MyBatis 的真正强大在于它的映射语句,这是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

  3. 取消 ios 上下滑动

  4. oracle pl/sql远程连接过程

    之前没用过oracle,现在公司用到就记录下安装过程吧.安装PL/SQL工具,安装oracle11G工具.打开PL/SQL 进行配置.

  5. Leetcode559.Maximum Depth of N-ary TreeN叉树的最大深度

    给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 说明: 树的深度不会超过 1000. 树的节点总不会超过 5000. class Solution { ...

  6. 【python之路30】反射

    一.反射 1.反射的基本介绍: 反射是所有程序的专有名词,在java,C#语言中都存在反射,那么什么是反射呢? python中 的反射概括来说:是通过字符串的形式导入模块,并通过字符串的形式去模块中寻 ...

  7. mac上mamp用navigate连接不上

    参考 http://blog.sina.com.cn/s/blog_6742643c0100r9qp.html

  8. ubuntu setup.py 安装时报Error -5 while decompressing data: incomplete or truncated stream

    缺少 python-devel 包 apt-get install python-dev -y

  9. 中断描述符表 IDT

    保护模式下三个重要的系统表——GDT.LDT和IDT 这里主要是解释中断描述符表 中断描述符表IDT将每个异常或中断向量分别与它们的处理过程联系起来.与GDT和LDT表类似,IDT也是由8字节长描述符 ...

  10. 关于 LVM

    [名词解释] 1. PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区.     2.PP(Physical Extend):物理区域,PV中可以用于分配的最小存 ...