正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

  • 需要引入内置模块re

  • 缺点:效率低下,能用字符串方法完成尽量使用字符串的方法

  • 优点:编码简单

原子       含义

\d      0-9中的任意一个字符

\D      排除0-9

\s       \t,\n,\r,空格等字符中的一个

\S      排除\s

\w      数字字母下划线

\W        排除\w

[]       自定义的原子表

[^]      排除自定义的原子表

^       行首,

¥      行尾

.      表示出\n以外的任何字符,

\b      词边界

\B      非词边界

\A      字符串首

\Z      字符串结尾

-         表示域,一个范围,比如1-9,1到9中的任意一个

-----------------------------------------------

元字符      含义

{}       表示重复原子次数

{m}       表示重复原子m次

{m,n}      表示重复原子最少m次,最多n次

{m,}        表示重复原子最少m次,无上限

()       改变优先级,取子元素

*        连续出现重复至少0次,意思出没出现没关系,但是存在贪婪性,

+         至少出现一次,存在贪婪性

?         出现0次或1次

*?,+?        取消贪婪

|       或       

----------------------------------------------------------------------

模式修正符

修饰符      含义

re.S       使 . 匹配所有字符

re.L       本地识别化

re.U      根据Unicode字符解析字符吗,会影响\b,\B,\w,\W

re.l       不区分大小写

re.M      多行匹配

------------------------------------------------------------------------

  • 模式字符串一定要使用原字符串,也就是用r开头的字符串。r'www'

  • 严格区分大小写

  • 如果正则表达式中有{,},[,],-,?,*,|^,$,.等做普通字符,则要将其转义

正则常用的函数方法

re.match()字符串开头开始匹配,只匹配开头

re.search()从开始开始匹配,但是不限于只匹配开头,中间的也行

re.findall()找出所有符合规则的并以列表的形式返回

re.split()根据模式拆分

re.sub,re.subn:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串。可以指定替换的次数,

如果 不指定,替换所有的匹配字符串

前者返回一个替换后的字符串,后者返回一个元组,第一个元素替换后的字符串

re.group()和re.groups():用于提取子元素,模式中一个括号就是一个子元素,group和groups只能在match和search方法里使用,

通过返回的match object获取子元素。在模式串和sub和subn中的替换字符串中可以使用\1,\2,\3....来引用子元素

compile():就是把规则存储起来,不需要多次解释,提高运行速度

python编程基础之三十八的更多相关文章

  1. python编程基础之三十

    时间模块: 时间戳:就是当前是键距离1970年1月1日0:0:0的秒数,后面还带小数,可以说是非常精确 时间的表示形式: a.以整数或者浮点数表示一个以秒为单位的时间间隔,这个时间的基础值1970.1 ...

  2. python编程基础之三十四

    面向对象:三大特征:封装,继承,多态 封装:隐藏对象的实现过程,对外仅仅公开接口,控制在程序中的读取和修改的访问级别 类,函数都是一种封装 属性私有化:当类里面的属性不想被外部访问,可以将这些属性设置 ...

  3. python编程基础之三十六

    文件处理:文件处理包括读文件,写文件 读文件: 1.打开文件 2.读取文件 3.关闭文件 写文件: 1.打开文件 2.写如文件 3.关闭文件 无论是读取文件还是写文件都时需要打开文件,和关闭文件 打开 ...

  4. python编程基础之三十五

    系统的魔术方法:系统的魔术方法特别多,但是也都特别容易懂,简单的讲就是对系统的内置函数进行重写,你需要什么效果就重写成什么样, 比如说len()方法针对的对象本来没有自定义类的对象,但是当你重写了__ ...

  5. python编程基础之三十二

    成员方法:成员方法就是一个函数,只是作用域在类内,并且第一个参数必须是self,self代表当前对象, class Dog(object): def bark(self): #成员方法,第一个参数必须 ...

  6. python编程基础之十八

    字符串的查找和替换常用函数: str.count(sub,start = 0,end = len(str)) 计算sub 在str中出现的次数,[start,end)寻找区间 str.find(str ...

  7. VS2010/MFC编程入门之三十八(状态栏的使用详解)

    上一节中鸡啄米讲了工具栏的创建.停靠与使用,本节来讲解状态栏的知识. 状态栏简介 状态栏相信大家在很多窗口中都能见到,它总是用来显示各种状态.状态栏实际上也是一个窗口,一般分为几个窗格,每个窗格分别用 ...

  8. python编程基础之三十七

    数据的持久化:数据持久化就是将内存中的对象转换为存储模型,以及将存储模型转换为内存中的对象的统称. 对象可以是任何数据结构或对象模型,存储模型可以是关系模型.XML.二进制流等 Python的数据持久 ...

  9. python编程基础之三

    变量 变量定义:变量名 = 值  #不需要给定变量类型 变量命名规范:也就是标识符的命名规则, 1.由数字,字母,下划线组成,不允许数字开头 2.区分大小写 3.不能是系统保留字(keyword) 获 ...

随机推荐

  1. 第11讲-Java泛型和文件操作

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1.泛型 1.2.2.文件操作 2.具体内容 2.1.Java泛型 2.1.1.为什么需要泛型 我们发现在List中,底层是Object[ ]数 ...

  2. Java 中的array数组总结之一

    数组:是一个将同种类型的数据存储在存储单元中. 可以用三种方式声明数组: 1.数据类型 标识符[]; int mothDays[]; 2.数据类型 标识符[] = new 数据类型[大小]; int ...

  3. 使用maven的profile构建不同环境配置

    基本概念说明(resources.filter和profile): 1.profiles定义了各个环境的变量id 2.filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profil ...

  4. FreeSql (十)更新数据

    FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...

  5. 猿类如何捕获少女心--难以琢磨的try-catch

    背景故事 影片<金刚>是2005年上映的一部冒险电影,它讲述1933年的美国,一名勇于冒险的企业家及电影制作者,率领摄制队伍到荒岛拍摄,其中包括女主角安及编剧杰克,他们遇到恐龙及当地土著的 ...

  6. Android开发教程:开发框架基本原理

    1.提供应用程序框架(Framework) 开发者可以遵照这些框架搭建应用程序读者可以结合J2SE平台的Applet框架或J2ME平台的移动信息设备套件框架来理解Android平台的应用程序框架. 每 ...

  7. 【第十一篇】这一篇来说说MVC+EF+easyui datagrid的查询功能

    老规矩 直接上代码 <form class="form-horizontal"> <div class="box-body"> < ...

  8. MySql(二)_NHibernateHelper管理会话工厂

    1.定义接口的好处: (1) 清楚的看到里面有哪些方法: ( 2 )  可以更换实现类:Nhibernate实现件可以更换: Manger文件夹(另外两个是Model.Mappings文件夹) 首先M ...

  9. Day 14 查找文件 find

    find 查找方式 1.按照名称进行查找 [root@oldboyedu ~]# find ./ -name "*eth0" 2.按照名称查找(不区分大小写) [root@oldb ...

  10. 快速获取dom到body左侧和顶部的距离,简单粗暴无bug-getBoundingClientRect

    获取dom到body左侧和顶部的距离-getBoundingClientRect 平时在写js的时候,偶尔会需要用js来获取当前div到 body 左侧.顶部的距离.网上查一查,有很多都是通过offs ...