title: python正则表达式Re模块备忘录

date: 2019/1/31 18:17:08

toc: true

python正则表达式Re模块备忘录

备忘录

  • python中的数量词为贪婪模式
  • 前瞻回顾的解释

          前瞻: exp1(?=exp2) exp1后面的内容要匹配exp2

          负前瞻: exp1(?!exp2) exp1后面的内容不能匹配exp2

          后顾: (?<=exp2)exp1 exp1前面的内容要匹配exp2

          负后顾: (?<!exp2)exp1 exp1前面的内容不能匹配exp2

一览

选项

#\w, \W, \b, \B, \d, \D, \s and \S
re.A
re.ASCII re.DEBUG #忽略大小写
re.I
re.IGNORECASE
#使预定字符类 \w \W \b \B \s \S
re.L
re.LOCALE
#多行模式
re.M
re.MULTILINE
#使'.'特殊字符与任何字符匹配包括换行符;
re.S
re.DOTALL
#可以使用注释在正则中,忽略表达式的空白
re.X
re.VERBOSE

方法

re.compile(pattern, flags=0)
re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)
re.fullmatch(pattern, string, flags=0)
re.split(pattern, string, maxsplit=0, flags=0)
re.findall(pattern, string, flags=0)
re.finditer(pattern, string, flags=0)
re.sub(pattern, repl, string, count=0, flags=0)
re.subn(pattern, repl, string, count=0, flags=0)
re.escape(pattern)
re.purge()

match

  • ------------------属性--------------------------
  • string: 匹配时使用的文本
  • re: 匹配时使用的Pattern对象。
  • pos: 文本中正则表达式开始搜索的索引。
  • endpos: 文本中正则表达式结束搜索的索引
  • lastindex: 最后一个被捕获的分组在文本中的索引
  • lastgroup: 最后一个被捕获的分组的别名
  • ------------------方法------------------------------
  • Match.getitem(g) 匹配的下标,从0开始
  • group([group1, …]): 同上述,下标从1开始
  • groups([default]):
  • groupdict([default]): 返回以有别名的组的别名为键、以该组截获的子串为值的字典
  • start([group]): 返回指定的组截获的子串在string中的起始索引
  • end([group]): 返回指定的组截获的子串在string中的结束索引
  • span([group]): 返回(start(group), end(group))。
  • expand(template): 可用作替换,比如m.expand(r'\2 \1\3')

Pattern

  • ------------------属性--------------------------
  • pattern: 编译时用的表达式字符串。
  • flags: 编译时用的匹配模式。
  • groups: 表达式中分组的数量。
  • groupindex: 以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不在内。
  • ------------------方法------------------------------
  • match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]) :
  • search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]): 与match的不同在于能找到中间的匹配
  • split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]): 分割字符
  • findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]):
  • finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]): 可以使用for来迭代
  • sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]): 替换
  • subn(repl, string[, count]) |re.sub(pattern, repl, string[, count]): 返回 (sub(repl, string[, count]), 替换次数)。

例子

匹配字符串中除了"abc"以外的所有其它部分

https://www.cnblogs.com/deerchao/archive/2008/12/03/1346940.html
正则表达式:
([^abc]|a(?!bc)|(?!<a)b(?!c)|(?<!ab)c)+ 字符串: xbsdabcwcwabczia 匹配:
1, xbsd
2, wcw
3, zia
说明:
任意不是abc的字符,通过..
字符a,只有在后边不是bc的情况下通过;
字符b,只有在前面不是a,且后边不是c的情况下通过;
字符c,只有前面不是ab的情况下通过..

参考资料

python 速记正则使用原标题: 一篇搞定Python正则表达式

正则表达式30分钟入门教程

常用正则表达式,在线正则 其他正则工具 jb51 正则速查表

官方re模块文档

cnblog Python正则表达式指南

EN 表达式在线测试

python正则表达式Re模块备忘录的更多相关文章

  1. Python面试题之Python正则表达式re模块

    一.Python正则表达式re模块简介 正则表达式,是一门相对通用的语言.简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的:此套规则,就是所谓的正则表达式.各个语言都有 ...

  2. Python 正则表达式——re模块介绍

    Python 正则表达式 re 模块使 Python 语言拥有全部的正则表达式功能,re模块常用方法: re.match函数 re.match从字符串的起始位置匹配,如果起始位置匹配不成功,则matc ...

  3. python正则表达式——re模块

    http://blog.csdn.net/zm2714/article/details/8016323 re模块 开始使用re Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先将 ...

  4. python 正则表达式re模块

    #####################总结##############    优点:  灵活, 功能性强, 逻辑性强.               缺点:  上手难,旦上手, 会爱上这个东西    ...

  5. python正则表达式re模块详细介绍--转载

    本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆( ...

  6. python正则表达式-re模块的爱恨情仇

    利用python的re模块,使用正则表达式对字符串进行处理 # 编辑者:闫龙 import re restr = "abccgccc123def456ghi789jgkl186000&quo ...

  7. python正则表达式-re模块

    目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...

  8. python -- 正则表达式&re模块(转载)

    1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

  9. Python正则表达式re模块学习遇到的问题

    Python正则表达式处理的组是什么? Python正则表达式处理中的匹配对象是什么? Python匹配对象的groups.groupdict和group之间的关系 Python正则表达式re.mat ...

随机推荐

  1. 从零开始搭建服务器部署web项目

    前言 该教程旨在完整描述建站过程,会将博主踩过的坑尽量详细的罗列出来.整个建站流程相对较为庞大,因此做了分解,同时适合大家有针对性的查询感兴趣的部分. 一.如何拥有自己的云服务器. 二.域名的购买与解 ...

  2. 路由刷rom手册

    最近对家里面那5,6个路由器下手了. 路由列表:小米mini 2台. 优酷路由宝l1,tp wdr3320,tp wr840n,  友华wr1200js,小米路由r1n 步骤: 1. 想办法开启ssh ...

  3. MVC 伪静态路由、MVC路由配置,实现伪静态。

    前段时间,研究了一下mvc路由配置伪静态,在网上扒了很多最后还是行不通,所以我现在把这些心得整理出来,供大家分享: 1.mvc中默认路由配置是:http://localhost:24409/Home/ ...

  4. 最好用的jQuery-Ajax缓存插件

    AJAX-Cache    最好用的jQuery-Ajax缓存插件 介绍 AJAX-Cache是一款jQuery插件,基于localStorage/sessionStorage实现异步请求缓存功能,并 ...

  5. UOJ #449. 【集训队作业2018】喂鸽子

    UOJ #449. [集训队作业2018]喂鸽子 小Z是养鸽子的人.一天,小Z给鸽子们喂玉米吃.一共有n只鸽子,小Z每秒会等概率选择一只鸽子并给他一粒玉米.一只鸽子饱了当且仅当它吃了的玉米粒数量\(≥ ...

  6. RecyclerView的Item的单击事件

    RecyclerView 的每个Item的点击事件并没有像ListView一样封装在组件中,需要Item的单击事件时就需要自己去实现,在Adapter中为RecyclerView添加单击事件参考如下: ...

  7. 好程序员web前端分享想要学习前端需要学那些课程

    好程序员web前端分享想要学习前端需要学那些课程,仔细思考了一下如何回答好这个话题,其实前端是一个涵盖面非常之广泛的一个职位,所需知识体系非常庞杂,与传统语言“想要精一行,必先通一门” 有很大差别, ...

  8. 类Object

    Object概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定 ...

  9. 关于spring boot中 EmbeddedServletContainerCustomizer

    EmbeddedServletContainerCustomizer这个在spring boot2.X的版本中就不再提供支持了貌似2.0版本还能用 ,用来提供对异常的处理.在支持EmbeddedSer ...

  10. JDBC 初识

    JDBC是 "Java Database Connective" 的缩写,是使用Java去连接数据库进行数据操作的过程. 首先通过Eclipse 创建动态项目,Dynamic We ...