2017-07-27 13:52:08

 一、正则表达式的概念

(1)正则表达式是用来简洁表达一组字符串的表达式,最主要应用在字符串匹配中。

  • 正则表达式是用来简洁表达一组字符串的表达式
  • 正则表达式是一种通用的字符串表达框架
  • 正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具
  • 正则表达式可以用来判断某字符串的特征归属

(2)正则表达式是一个字符串,通过编译将符合正则表达式语法的字符串转换成正则表达式特征。

二、正则表达式的语法

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

(1)正则表达式的操作符

经典的正则表达式:

三、Re库的使用

re库采用原生字符串(raw string)来表达正则表达式。所谓原生字符串是指没有反义字符的字符串,也就是说在原生字符中‘\’就是反斜杠,不是转义。使用原生字符串只需要在字符串前加上r即可。

也可以使用正常的string字符串,不过使用string字符串的话需要很多的转义字符来表示单纯的反斜杠。

Re库的主要功能函数:

  • re.search(pattern, string, flags=0):在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象

∙ pattern : 正则表达式的字符串或原生字符串表示
∙ string : 待匹配字符串
∙ flags  : 正则表达式使用时的控制标记

  • re.match(pattern, string, flags=0):从一个字符串的开始位置起匹配正则表达式,返回match对象

∙ pattern : 正则表达式的字符串或原生字符串表示
∙ string : 待匹配字符串
∙ flags  : 正则表达式使用时的控制标记

  • re.findall(pattern, string, flags=0):搜索字符串,以列表类型返回全部能匹配的子串

∙ pattern : 正则表达式的字符串或原生字符串表示
∙ string : 待匹配字符串
∙ flags  : 正则表达式使用时的控制标记

  • re.split(pattern, string, maxsplit=0, flags=0):将一个字符串按照正则表达式匹配结果进行分割,返回列表类型

∙ pattern : 正则表达式的字符串或原生字符串表示
∙ string : 待匹配字符串
∙ maxsplit: 最大分割数,剩余部分作为最后一个元素输出
∙ flags  : 正则表达式使用时的控制标记

  • re.finditer(pattern, string, flags=0):搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

∙ pattern : 正则表达式的字符串或原生字符串表示
∙ string : 待匹配字符串
∙ flags  : 正则表达式使用时的控制标记

  • re.sub(pattern, repl, string, count=0, flags=0):在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

∙ pattern : 正则表达式的字符串或原生字符串表示
∙ repl : 替换匹配字符串的字符串
∙ string : 待匹配字符串
∙ count  : 匹配的最大替换次数
∙ flags  : 正则表达式使用时的控制标记

正则表达式的另一种等价用法,使用 compile () 函数:

经过了compile后的正则表达式可以使用如下函数,这里只需要给出需要匹配的字符串就可以了:

三、Re库的match对象

Match对象是一次匹配的结果,包含匹配的很多信息。

  • match对象的属性

  • match对象的方法

四、贪婪匹配与最小匹配

Re库默认采用贪婪匹配,即输出匹配最长的子串;

只要长度输出可能不同的,都可以通过在操作符后增加?变成最小匹配

Python 爬虫-正则表达式的更多相关文章

  1. Python 爬虫-正则表达式(补)

    2017-08-08 18:37:29 一.Python中正则表达式使用原生字符串的几点说明 原生字符串和普通字符串的不同 相较于普通字符串,原生字符串中的\就是反斜杠,并不表达转义.不过,字符串转成 ...

  2. Python爬虫 正则表达式

    1.正则表达式概述 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来 ...

  3. Python爬虫-正则表达式基础

    import re #常规匹配 content = 'Hello 1234567 World_This is a Regex Demo' #result = re.match('^Hello\s\d\ ...

  4. python爬虫+正则表达式实例爬取豆瓣Top250的图片

    直接上全部代码 新手上路代码风格可能不太好 import requests import re from fake_useragent import UserAgent #### 用来伪造爬头部信息 ...

  5. python爬虫之re正则表达式库

    python爬虫之re正则表达式库 正则表达式是用来简洁表达一组字符串的表达式. 编译:将符合正则表达式语法的字符串转换成正则表达式特征 操作符 说明 实例 . 表示任何单个字符 [ ] 字符集,对单 ...

  6. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  7. python爬虫数据解析之正则表达式

    爬虫的一般分为四步,第二个步骤就是对爬取的数据进行解析. python爬虫一般使用三种解析方式,一正则表达式,二xpath,三BeautifulSoup. 这篇博客主要记录下正则表达式的使用. 正则表 ...

  8. Python爬虫入门之正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  9. Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

随机推荐

  1. ide vscode安装

    在linux系统中安装VSCode(Visual Studio Code)   在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接 ...

  2. 线段树(I tree)

    Codeforces Round #254 (Div. 2)E题这题说的是给了一个一段连续的区间每个区间有一种颜色然后一个彩笔从L画到R每个区间的颜色都发生了 改变然后 在L和R这部分区间里所用的颜色 ...

  3. 关于VS2010的帮助文档更改路径

    不小心把MSDN装在系统盘怎么办? 由于自己的C盘空间比较有限,所以经常需要把软件安装在其他磁盘,比如E盘,但是这次重装却不小心就装在C盘了,特遗憾,偶然在网上找到可以更改路径的方法,自己试试,成功了 ...

  4. python中递归调用

    递归一个通俗的解释就是,在函数中调用函数本身:伪代码如下: In [31]: def fun(): ....: fun() # 这个递归没有任何作用,只是为了说明什么是递归 递归(Recursion) ...

  5. Python入门之Pycharm开发中最常用快捷键

    要查阅Pycharm的快捷键,当然要看官方文档,https://www.jetbrains.com/help/pycharm/mastering-keyboard-shortcuts.html 编辑类 ...

  6. margin显示怪异,外边距合并问题

    很多时候我们使用两个div,内层的div设置文字,需要垂直居中与上层div,但是怎么设置样式都不行,vertical-align:middle也不行. 代码: <div style=" ...

  7. Mysql的基本语句

    Mysql的基本语句 1.查询当前数据库所有表名: -- 方案一: show tables; --方案二:jeesite为数据库 select table_name from information_ ...

  8. 03:requests与BeautifulSoup结合爬取网页数据应用

    1.1 爬虫相关模块命令回顾 1.requests模块 1. pip install requests 2. response = requests.get('http://www.baidu.com ...

  9. 20145328 《网络对抗技术》MSF基础应用

    20145328 <网络对抗技术>MSF基础应用 --------------先提交,后续完成------------------

  10. mips32和x86下的大小端模式判定

    一.背景 1.1 mips32搭载32bit vxworks操作系统 1.2 x86搭载64bit windows10操作系统 二.大小端模式判定前的准备 2.1 先要知道各种架构上各种整型数占据的b ...