1 前言

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

上面都是官方的说明,博主自己的理解是(仅供参考):通过事先规定好一些特殊字符的匹配规则,然后利用这些字符进行组合来匹配各种复杂的字符串场景。比如现在的爬虫和数据分析,字符串校验等等都需要用到正则表达式来处理数据。

python的正则表达式则是re模块了:

  • re 模块使 Python 语言拥有全部的正则表达式功能。

  • re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

2 基本语法

2.1 match函数

只从字符串的最开始与pattern进行匹配,下面是函数的语法 :

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

这里是参数的描述 :

  • pattern - 这是要匹配的正则表达式。

  • string - 这是字符串,它将被搜索用于匹配字符串开头的模式。

  • flags - 可以使用按位OR(|)指定不同的标志。这些是修饰符,如下表所列。

  • re.match 函数在成功时返回匹配对象,失败时返回None。使用match(num)或groups()函数匹配对象来获取匹配的表达式。


示例

#未从初始位置匹配,会返回None
import reline = 'i can speak good english'
matchObj = re.match(r'\s(\w*)\s(\w*).*',line)
if matchObj:print('matchObj.group() :',matchObj.group())print('matchObj.group() :',matchObj.group(1))print('matchObj.group() :',matchObj.group(2))print('matchObj.group() :',matchObj.group(3))
else:print('no match!')

#从初始位置开始匹配
import reline = 'i can speak good english'
matchObj = re.match(r'(i)\s(\w*)\s(\w*).*',line)
if matchObj:print('matchObj.group() :',matchObj.group())print('matchObj.group() :',matchObj.group(1))print('matchObj.group() :',matchObj.group(2))print('matchObj.group() :',matchObj.group(3))
else:print('no match!')

2.2 search 函数

与match()工作的方式一样,但是search()不是从最开始匹配的,而是从任意位置查找第一次匹配的内容。下面是这个函数的语法 :

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

这里是参数的描述 :

  • pattern - 这是要匹配的正则表达式。

  • string - 这是字符串,它将被搜索用于匹配字符串开头的模式。

  • flags - 可以使用按位OR(|)指定不同的标志。这些是修饰符,如下表所列。

  • re.search函数在成功时返回匹配对象,否则返回None。使用match对象的group(num)或groups()函数来获取匹配的表达式。

示例

import reline = 'i can speak good english'
matchObj = re.search('(.*) (.*?) (.*)',line)
if matchObj:print('matchObj.group() :',matchObj.group())print('matchObj.group() :',matchObj.group(1))print('matchObj.group() :',matchObj.group(2))print('matchObj.group() :',matchObj.group(3))
else:print('no match!')

2.3 sub 函数

使用正则表达式re模块中的最重要的之一是sub。

re.sub(pattern, repl, string, max=0)

此方法使用repl替换所有出现在RE模式的字符串,替换所有出现,除非提供max。此方法返回修改的字符串。

示例

import reline = 'i can speak good english'
speak = re.sub(r'can','not',line)
print(speak)
speak1 = re.sub(r'\s','',line) #替换所有空格
print(speak1)

3 特殊类语法

3.1 字符类

3.2 特殊字符类

3.3 重复匹配

3.4 非贪婪重复

这匹配最小的重复次数:

3.5 圆括号分组

3.6 反向引用

与以前匹配的组再次匹配

3.7 锚点

需要指定匹配位置。

3.8 带括号的特殊语法


Python正则表达式大全就总结到这里,快去学习吧!!!

Python 正则表达式大全,值得收藏相关推荐

  1. web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址

    web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址   Huang Jie Blog .Com-前端开发  http://www.huangjieblog.com/?feed=r ...

  2. 11个技巧让你编写出更好的Python代码,值得收藏!!

    在本教程中,我们将展示11个技巧来编写更好的Python代码!我们展示了许多最佳实践,它们通过使代码更加简洁和更具python风格来改进代码.以下是所有技巧的概述: 1)使用enumerate()而不 ...

  3. c 语言学习大全 值得收藏的文章

    语言学习大全 C 语言的基础语法 第一部分 软件的安装 1.推荐使用 visual studio 编辑器 2.Vc6++ 3.学校 自己教学用的软件 第二部分 入门hello world 内容 流程就 ...

  4. python for循环加速_干货总结,24招加速你的Python代码,值得收藏

    一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第3式,按调用函数分析代码运行时间 ...

  5. Excel 各种密码的破解,各种大全值得收藏!(亲测有效)

    本文介绍在 Excel 的多个文件版本中破解各类密码,包含文件的查看.只读密码,工作表.工作簿的保护密码,以及 VBA 工程密码.内容非常全面,建议你收藏.文件作者加密码是防止数据被查看,修改,所以, ...

  6. python正则表达式大全(常用数字、字符、常用的需求包括手机号、邮箱、电话号码、身份证号等)

    一.正则表达式基础字符代表的意思 \w 匹配所有的字母 \W 匹配所有非字母 \d 匹配所有的数字 \D 匹配所有非数字 \s 空格 \S 匹配所有非空格 . 任意除换行符(\n) \. 表示点符号, ...

  7. BadUsb程序大全-值得收藏

    获取方式在文章末尾 何为BadUsb 简介 通过硬件直接插入对方电脑,让对方电脑执行代码,达到干扰.控制主机或者窃取信息等目的. 威胁 BadUSB的威胁在于:恶意代码存在于U盘的固件中,PC上的杀毒 ...

  8. Windows CMD命令大全(值得收藏)

    命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...

  9. Python 库大全

    作者:Lingfeng Ai 链接:http://www.zhihu.com/question/24590883/answer/92420471 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  10. 分享6 个值得收藏的 Python 代码

    1.类有两个方法,一个是 new,一个是 init,有什么区别,哪个会先执行呢? 1 class test(object):​​​ def __init__(self):​​​ print(" ...

最新文章

  1. Selenium+PhantomJS使用时报错原因及解决方案
  2. c++连连看游戏_用Python玩连连看是什么效果?
  3. JQuery Basic Features Quick Walkthrough
  4. 训练不出结果_工业设计师如何训练自己的设计思维? 问答
  5. c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用)
  6. 串口、COM口、TTL和RS-232的区别详解
  7. 美团点评酒旅数据仓库建设实践
  8. shell 当中的比较运算
  9. 塑料浮船坞行业调研报告 - 市场现状分析与发展前景预测
  10. 没来得及整理的一些网站
  11. (转)在NGUI使用图片文字(数字、美术字)(直接可用于UILable)
  12. oracle 中execute immediate 是什么意思?
  13. 怎样彻底帮妹子解决weditor的安装的问题
  14. visio教程仓库流程图_教你使用visio 2013绘制产品流程图
  15. 数据仓库系列之总线架构
  16. kali 控制安卓手机拍照,查看定位,获取通信录,以及其他
  17. 小技巧帮助你轻松卸载ie8+还原旧版
  18. 经典兔子问题有一对兔子从出生后第3个月起每个月都生一对兔子
  19. Win10跳过开机登录界面
  20. 导出word中图片的方法

热门文章

  1. IDEA修改背景颜色大全(护眼绿等)
  2. 代码整洁之道—技术分享
  3. R语言:关于我国各地区消费水平的聚类分析
  4. Sql server中 如何用sql语句创建视图
  5. 地理空间数据下载 积累
  6. Delphi开发Android用虚拟摇杆VirtualJoystic
  7. 人体静止存在雷达探测,雷达感应模组技术,物联网智能化发展
  8. 订单系统管理系统 开源_8个开源销售点系统
  9. 四种大数据分析方法 ,大数据学习入门必须掌握!
  10. matlab显示图像只有一半,我去噪后图像为什么只显示一半