1、简单的正则表达式

import re
s=r'abc'
re.findall(s,"aaaaaaaaaaaaaaa") #结果为[]
re.findall(s,"abcaaaaaaaaaaaa") #结果为['abc']
re.findall(s,"abcaaaaaabcaaaa") #结果为['abc','abc']

2、元字符

[] :指定一个字符集  例如:r't[io]p'  满足的字符串包括'tip'或'top'

  加上^表示取反  例如:r't[^io]p'  满足的字符串包括除'tip'或'top'之外的字符串

^ :匹配行首  r'^abc'  r'\^abc'

$ :匹配行尾

\ :\d=[0-9],\D=[^0-9],\s=[\t\n\r\f\v],\S=[^\t\n\r\f\v],\w=[a-zA-Z0-9],\W=[^a-zA-Z0-9]

  \[或\\取消所有的元字符

. :匹配任意字符

* :匹配零次或多次

+ :匹配一次或多次

?  :匹配一次或零次  例如:r"^010-?\d{8}$"

r=r"ab+?"    #'+?'是最小匹配模式,非贪婪模式
re.findall(r,'abbbbbbbb') #结果是'ab'

{} :{m,n}最少重复m次,最多重复n次 {0,}=* {1,}=+ {0,1}=?

() :分组,经常和‘|’一起使用,例如email的正则表达式r'\w{3}@\w+(\.com|\.cn)'

  注意:findall匹配的正则表达式中有分组,先返回匹配分组中的数据

例如:

s='adjadlk hello src=csvt yes jojjlk  jlij hello src=python yes jopm'
r1=r'hello src=.+ yes'
re.findall(r1,s) #结果['hello src=csvt yes','hello src=python yes']
r1=r'hello src=(.+) yes'
re.findall(r1,s) #结果['csvt','python']

|

3、正则表达式的编译

编译后的正则表达式效率比编译前的要高许多,例如:

#匹配电话号码
r1=r"\d{3,4}-?\d{8}"
p_tel=re.compile(r1) #编译后的正则表达式效率要高很多
p_tel.findall('010-12345678')

编译时,可以加一些参数,用来实现特殊功能和语法变更,例如:

csvt_re=re.compile(r'csvt',re.I)   #re.I表示在编译时忽略大小写
csvt_re.findall('CSVT') #结果是['CSVT']
csvt_re.findall('csvt') #结果是['csvt']
csvt_re.findall('CsVt') #结果是['CsVt']

4、执行匹配

(1)match():决定RE是否在字符串刚开始的位置匹配。未匹配,返回None;否则,返回MatchObject对象

   MatchObject实例方法

    group():返回被RE匹配的字符串

    start():返回匹配开始的位置

    end():返回匹配结束的位置

    span():返回一个元组包含匹配(开始,结束)的位置

  实际程序中,最常见的做法是将MatchObject保存在一个变量中,然后检查他是否为None

(2)search():扫描字符串,找到这个RE匹配的位置。未匹配,返回None;否则,返回MatchObject对象

(3)findall():找到RE匹配的所有子串,并把他们作为一个列表返回

(4)finditer():找到RE匹配的所有子串,并把他们作为一个迭代器返回

5、模块级函数:match()、search()、sub()、subn()、split()、findall()等

(1)sub()用法举例:

rs=r'c..t'
re.sub(rs,'python','csvt caat cvvt cccc') #结果'python python python cccc'

(2)subn()用法,返回值中比sub()多了一个数据,表示一共替换了多少次,比如

rs=r'c..t'
re.sub(rs,'python','csvt caat cvvt cccc') #结果('python python python cccc',3)

(3)split()的用法

s='121+334-34*33/44'
re.split(r'[\+\-\*/]',s) #结果['121','334','34','33','44']

6、编译标志-flags

Python学习 之 正则表达式的更多相关文章

  1. [Python学习笔记]正则表达式总结

    常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...

  2. Python学习笔记——正则表达式入门

    # 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...

  3. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  4. python学习日记(正则表达式)

    定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...

  5. python学习笔记----正则表达式

    正则: regular expression 常用的场景: #正则的包 >>> import re #match:开头匹配,匹配到,返回一个匹配对象,否则返回None >> ...

  6. python学习笔记——正则表达式regex

    1 概述 1.1 定义 本质是由一系列字符和特殊符号组成的字串,用来表示一定规则的某一类字符串. 1.2 特点 正则表达式是一个独立的技术,其在多种编程语言中使用. 在python语言中的正则表达式模 ...

  7. Python学习 :正则表达式

    正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...

  8. python 学习总结----正则表达式

    正则表达式 应用场景 - 特定规律字符串的查找,切割,替换 - 邮箱格式:URl,IP地址等的校验 - 爬虫项目中,特定内容的提取 使用原则 - 只要使用字符串等函数能解决的问题,就不要使用正则 - ...

  9. python学习-53 正则表达式

    正则表达式 就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过RE模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 1.元字符 - ...

随机推荐

  1. codeforces 696A Lorenzo Von Matterhorn 水题

    这题一眼看就是水题,map随便计 然后我之所以发这个题解,是因为我用了log2()这个函数判断在哪一层 我只能说我真是太傻逼了,这个函数以前听人说有精度问题,还慢,为了图快用的,没想到被坑惨了,以后尽 ...

  2. Linux基本命令(3)文件备份和压缩命令

    文件备份和压缩命令 在Linux中,常用的文件压缩工具有gzip.bzip2.zip.bzip2是最理想的压缩工具,它提供了最大限度的压缩.zip兼容性好,Windows也支持. 命令 功能 bzip ...

  3. QT-【转】2D编程

    Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕上和绘图·设备上进行绘制,主要基于QPainter.QPainterDevice和QPainterEngine这3个类. 1.QPainter ...

  4. 大连网络赛 1006 Football Games

    //大连网络赛 1006 // 吐槽:数据比较水.下面代码可以AC // 但是正解好像是:排序后,前i项的和大于等于i*(i-1) #include <bits/stdc++.h> usi ...

  5. 多校5 1004 HDU5784 统计锐角三角形数目

    http://acm.hdu.edu.cn/showproblem.php?pid=5784 题意:n个点,找多少个锐角三角形数目 思路:极角排序+two pointers 当前选择的点集要倍增一倍, ...

  6. SQL Server 执行计划

    当一个查询被提交时,发生了什么? 向SQL Server提交一个查询时,sever上的许多进程会在这个查询上开始工作. 这些进程的目标就是管理这个系统,使得这个查询可以选择,插入,更新,删除数据. 每 ...

  7. Phonegap学习点滴(2) -- 网络状态检测

    Phonegap学习点滴(2) -- 网络状态检测  http://blog.csdn.net/x251808026/article/details/16992943 方法一:在MainActivit ...

  8. WINRAR评估版本弹出框消除

    网上有很多WINRAR评估版本,这些版本下载安装了之后总会有些广告弹出,让人很烦恼,现在教大家一个方法消除这些弹出框. 复制以下代码:    RAR registration data SeVeN U ...

  9. hibernate注解@JoinTable说明

    表关联(@JoinTable)注解说明:@Target({METHOD, FIELD})public @interface JoinTable{    String name() default &q ...

  10. Javascript/Jquery——简单定时器的多种实现方法

    第一种方法: <script language="javascript"> //使用setInterval间歇调用 (不建议使用该方法) $(function(){ s ...