正则表达式与Python

在了解了正则表达式的相关知识之后,开始查看Python当前如何通过使用re模块来支持正则表达式,re模块在很早之前就引入了,用于替换那些已过时的regex模块和regsub模块——这两个模块在Python2.5版中移除,而且此后导入这两个模块中的任意一个都会出发ImportError异常。

re模块支持更强大而且更通用的Perl风格的正则表达式,该模块允许多个线程共享同一个已经编译的正则表达式对象,也支持命名子组。

使用compile( )函数编译正则表达式

后面我们将要介绍的几乎所有的re模块函数都可以作为regex对象的方法。注意,尽管推荐预编译,但这并不是必须的。如果需要编译,就使用编译过的方法:如果不需要编译,就使用函数。幸运的是,不管使用函数还是方法,它们的名字都是相同的。

对于一些特别的正则表达式编译,可选的标记可能以参数的形式给出,这些标记允许不区分大小写的匹配,使用系统的本地化设置来匹配字母数字,等等。

这些标记也可以作为参数适用于大多数re模块函数。如果想要在方法中使用这些标记,它们必须已经集成到已编译的正则表达式对象之中,或者需要使用直接嵌入到正则比啊倒是本身的(?F)标记,其中F是一个或者多个i(用于re.I/IGNORECASE)、m(用于re.M/MULTILINE)、s(用于re.S/DOTALL)等。如果想要使用多个,就把它们放在一起而不是使用按位或操作,例如,(?im)可以用于同时表示re.IGNORECASE和re.MULTILINE。

匹配对象以及group( )和groups( )方法

当处理正则表达式时,除了正则表达式对象之外,还有另一个对象类型:匹配对象。这些是成功调用match( )或者search( )返回的对象。匹配对象有两个主要的方法:group( )和groups( )。

group( )要么返回整个匹配对象,要么根据要求返回特定子组。groups( )则仅返回一个包含唯一或者全部子组的元组。如果没有子组的要求,那么当group( )仍然返回整个匹配时,groups( )返回一个空元组。

使用match( )方法匹配字符串

match( )方法是将要介绍的第一个re模块函数和正则表达式对象方法。match( )函数试图从字符串的起始部分对模式进行匹配。如果匹配成功,就返回一个匹配对象;如果匹配失败,就返回None,匹配对象的group( )方法能够用于显示那个成功的匹配。下面是如何运用match( )方法以及group( )方法的一个实例:

模式“foo”完全匹配字符串“foo”,我们也能够确认m是交互式解释器中匹配对象的示例。

我们再来看一个失败的匹配示例,它返回None:

因为上面的匹配失败,所以m被赋值为None,而且以此方法构建的if没有指明任何操作。对于剩余的示例,如果可以,为了简单起见,将省去if语句块,但在实际操作中,最好不要省去以避免AttributeError异常(None是返回的错误值,该值并没有group( )属性[方法])。

只要模式从字符串的起始部分开始匹配,即使字符串比模式长,匹配也可以成功。例如,模式"foo"将在字符串"food on the table"中找到一个匹配,因为它是从字符串的起始部分进行匹配的。

可以看到,尽管字符串比模式要长,但从字符串的起始部分开始匹配依然会正确。子串"foo"是从那个较长的字符串中抽取出来的匹配部分。

python正则表达式爬虫_Python爬虫之正则表达式一些常用方法相关推荐

  1. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫

    什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...

  2. python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...

    原博文 2017-07-17 16:39 − 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pytho ...

  3. python正则表达式入门_Python中的正则表达式教程

    本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...

  4. monthy python爬虫_Python爬虫DOTA排行榜爬取实例(分享)

    Python爬虫DOTA排行榜爬取实例(分享) 1.分析网站 打开开发者工具,我们观察到排行榜的数据并没有在doc里 doc文档 在Javascript里我么可以看到下面代码: ajax的post方法 ...

  5. python科技限制_Python爬虫怎么突破限制?经常遇到这四种限制突破方法

    Python爬虫常常用于搜索引擎,也可以进行数据的采集,现在很多企业都需要通过爬虫进行数据的采集,来分析市场的变化,同行的情况,还可以进行价格的对比等等.但是你的同行并不想让你获得这些信息,会在网站上 ...

  6. 51自学网python爬虫_Python爬虫基本流程

    爬虫定义 爬虫是请求网站并提取自己所需要数据的过程.通过我们的程序,可以代替我们向服务器发送请求,然后进行批量的数据下载. 爬虫基本流程 发起请求 通过url向服务器发送requests请求,请求可以 ...

  7. python正则表达式思考_PYTHON 爬虫笔记四:正则表达式基础用法

    [('https://book.douban.com/subject/30274766/?icn=index-editionrecommend', '潦草', '\n 贾行家\n', '\n 2018 ...

  8. python 简单网页_Python爬虫 (一):爬取一个简单的静态网页

    版本:python3.7 平台:windows10 工具 :pycharm 断断续续学习了py3爬虫2周左右的时间,发现自己学习的过于零散化,所以想通过这个专栏系统的整理下自己所学过的知识.如有错误, ...

  9. python bs4模块_python爬虫之Beautifulsoup模块用法详解

    什么是beautifulsoup: 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.(官方) beautifulsoup是 ...

最新文章

  1. 卷积神经网络(Convolutional Neural Network, CNN)
  2. 若有代数式,则以下能够正确表示该代数式的c语言表达是是 07年4月,2007年4月全国计算机等级考试二级笔试试卷...
  3. Linux常用命令 积累
  4. docker-compose部署kafka
  5. 怎样和客户一起搞定需求
  6. 八爪鱼 是java做的吗_章鱼扫描仪:Java构建工具和恶意软件
  7. mysql datetime 后面带了很多0_面试官:MySQL 表设计要注意什么?
  8. android在activity中锁屏解锁后重走OnCreate的问题的解决办法
  9. 为什么我的mysql比redis快_为什么redis是单线程的以及为什么这么快?
  10. Oracle日期操作函数
  11. Android SDK 开发——发布使用踩坑之路
  12. 实验4微程序控制器实验
  13. WinRAR 曝出代码执行漏洞,你的官方中文无广告版该升级了
  14. 数字电路实验怎么接线视频讲解_220V电动葫芦实物接线图
  15. Win10禁止Nvidia显卡驱动程序自动更新
  16. 创业日志(三十)华东华南之10天7市行
  17. 一元三次方程求根公式推导
  18. 读取ntfs的usn
  19. 网站建设:颜色与线条的选择
  20. Eclipse插件 JSDT

热门文章

  1. 极速收藏!巨详细的分布式架构知识体系
  2. 今日头条架构演进之路——高压下的架构演进专题
  3. 云小课 | 到底什么是区块链?
  4. 【华为云技术分享】Batch Normalization (BN) 介绍
  5. Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#
  6. Kotlin学习笔记29(完结篇) Flow part2 Flow的Buffer 中间操作符zip 打平 异常处理 Flow的完成 onCompletion的优势 onCompletion陷阱
  7. 迈向人工通用智能与混合天玑芯片架构
  8. Mac常用开源软件与下载链接一览
  9. Typora主题定制及常用配置的设置方法
  10. android sharedpre,android 数据存储一SharedPrenference存储简单数据