正则表达式与Python中re模块的使用

正则表达式与Python中re模块的使用

最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块
另外,给大家介绍一个在线测试正则表达式的神器网站http://tool.chinaz.com/regex
大家可以去这里练习正则表达式
下面总结一下正则表达式re模块的基础与使用。

正则表达式

使用场景

关于正则表达式的基本概念这里就不赘述了,大家可以去各种百科里查找它的定义。正则的使用场景主要分为两个:
一是:检测某一段字符串是否符合规则,也就是我们常说的"校验"
二是:从一大段字符串中找到符合规则的字符串,可以理解为"检索"
对于第一种使用场景,我们在登陆或者注册时填写邮箱、手机号等内容的时候经常会见到——底层的实现思路就是利用正则“校验”我们输入的内容是否“规范”。
另外,正则的“检索”功能大量使用在爬虫里,简单的说,爬虫能从一个网站大量的数据中得到用户想要的内容等等......

需要特别注意,正则表达式只是用来处理字符串的

元字符

一:可以灵活使用的元字符:[] 与 [^]
(1)数字  [0-9]
(2)小写字母  [a-z]
(3)大写字母  [A-Z]
(4)大小写字母  [A-Za-z]
(5)大小写字母+数字  [0-9A-Za-z]
(6)注意一个字符组不限制个数:匹配三个的话:[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]
(7)大小写字母+ _与%   [A-Za-z_%]
(8-1)匹配1-5   [1\-5]  用转义符,- 有特殊含义
(8-2)字符组中 - 是有特殊意义的,需要使用\作为转义符!
(9)[^123]——除了123都匹配,包括换行
二:匹配字符
(1)\d——所有数字
(2)\w——字母数字下划线
(3)\s——空白
(4)空格匹配空格
(5)\t——制表符
(6)\n——换行符
(7)\b——单词的边界   o\b——hello的'o'(o是单词的最后一个)    \bo——ok的'o'(o是单词的第一个)
(8)\W——除了字母数字下划线
(9)\D——除了数字
(10)\S——除了空白符
(11).——匹配除了换行符所有的
(12)[\D\d]、[\W\w]、[\s\S]——匹配所有的
(13)[^123]——除了123都匹配,包括换行
(14)^——开始字符
(15)$——结束字符
(16)^.....$——开始+结尾,中间是5个除了换行的符号
(17)|——或   长的放在前面!
(18)()——分组   www\.(baidu|oldboy)\.com  匹配www.baidu.com或者www.oldboy.com

量词

量词用来限制匹配的次数
(1){n}——匹配n次
(2){n,}——匹配至少n次
(3){n,m}——匹配n到m次
(4)+——一次或者多次  匹配小数点的前后必须有数      \d+\.\d+
(5)*——0次或者多次    匹配整数:第一位是1-9不要是0:     [1-9]\d*|0
(6)?——0次或者一次    匹配一个整数或者小数: \d+(\.\d+)?

贪婪匹配与惰性匹配

在正则中,默认的匹配模式是“贪婪匹配”,也就是说,在符合匹配规则的前提下尽可能多的去匹配字符,但是有些时候,我们不需要匹配太多的内容,只要得到需要的“片段”内容就好了。
量词是匹配多次的,这时我们可以在量词的后面加上?就可以让匹配“适可而止”了,这样的匹配规则就是惰性匹配

原文地址:https://www.cnblogs.com/paulwhw/p/10579914.html

时间: 2024-11-07 00:57:57

正则表达式与Python中re模块的使用的相关文章

正则表达式和python的re模块

正则表达式和python的re模块 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 什么是正则表达式 2. 元字符使用一览表: 3. 字符转义 4. 重复 5. 字符类 6. 分支条件 7. 分组 8. re模块 8.0.1. compile 8.0.2. match和search 8.0.3. split 8.0.4. findall 8.0.5. finditer 8.0.6. sub 8.0.7. subn 9. 参考资料 什么是正则表达式 在编写处理字符串的

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

Python中ConfigParser模块应用

Python中ConfigParser模块应用 Python的ConfigParser模块定义了3个对INI文件进行操作的类 RawConfigParser,ConfigParser和SafeConfigParser.其中RawCnfigParser是最基础的INI文件读取类,ConfigParser.SafeConfigParser支持对%(value)s变量的解析. 下面看看怎样通过ConfigParser类来解析一个ini文件. 配置文件settings.cfg [DEFAULT] myk

python中的模块安装

python中的模块研究: 需要用import导入的模块都是用python实现的. 内建的部分是用c.c++实现的. pypi:第三方的python包. 在windows上安装python: 1.安装python到C:\PythonXX,添加系统环境变量path:C:\PythonXX. 安装pypi库的方法三种方法: 1.在pypi上下载安装包离线安装 cd  $package-dir python   setup.py  install 在windos的cmd上也可以这样安装. 3.用eas

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

Python中optionParser模块的使用方法[转]

本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8

【转】关于python中re模块split方法的使用

注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于python中re模块split方法的使用 已有 3094 次阅读 2014-3-12 11:30 |系统分类:科研笔记 今天在写一段小代码的时候需要用到re.split()方法,在使用的过程中发现了一个以前不知道的新用法,发现这个用法还是挺实用的,就把它记录下来: >>> m = re.s

python中MySQLdb模块用法实例

篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMyS

Python中peewee模块

Python中peewee模块,有需要的朋友可以参考下. 前言关于ORM框架: 简介: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的"虚拟对象数据库". 对象关系映射(Object-Relational Mapping)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心