Python学习 之 正则表达式
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学习 之 正则表达式的更多相关文章
- [Python学习笔记]正则表达式总结
常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...
- Python学习笔记——正则表达式入门
# 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...
- Python学习--16 正则表达式
正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...
- python学习日记(正则表达式)
定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...
- python学习笔记----正则表达式
正则: regular expression 常用的场景: #正则的包 >>> import re #match:开头匹配,匹配到,返回一个匹配对象,否则返回None >> ...
- python学习笔记——正则表达式regex
1 概述 1.1 定义 本质是由一系列字符和特殊符号组成的字串,用来表示一定规则的某一类字符串. 1.2 特点 正则表达式是一个独立的技术,其在多种编程语言中使用. 在python语言中的正则表达式模 ...
- Python学习 :正则表达式
正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...
- python 学习总结----正则表达式
正则表达式 应用场景 - 特定规律字符串的查找,切割,替换 - 邮箱格式:URl,IP地址等的校验 - 爬虫项目中,特定内容的提取 使用原则 - 只要使用字符串等函数能解决的问题,就不要使用正则 - ...
- python学习-53 正则表达式
正则表达式 就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过RE模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 1.元字符 - ...
随机推荐
- HDU 2222 (AC自动机模板题)
题意: 给一个文本串和多个模式串,求文本串中一共出现多少次模式串 分析: ac自动机模板,关键是失配函数 #include <map> #include <set> #incl ...
- [GRYZ2015]INCR
题目描述 数列 A1,A2,...,AN,修改最少的数字,使得数列严格单调递增. 输入格式 第 1 行,1 个整数 N 第 2 行,N 个整数 A1,A2,...,AN 输出格式 1 个整数,表示最少 ...
- 解决YUM无法正常工作
1. 错误发生背景 在进行安装依赖包的时候,能够在YUM源中找到相关的RPM包,但是无法进行下载,在单独进行安装RPM包的时候能够进行安装,报错截图如下: 具体的报错信息如下: Error Downl ...
- 如何利用WordPress创建自定义注册表单插件
来源:http://www.ido321.com/1031.html 原文:Creating a Custom WordPress Registration Form Plugin 译文:创建一个定制 ...
- VS20xx下项目开发目录管理方法
在VS20XX之后项目管理使用解决方案(solution)管理一个大的开发工程中多个项目(Project). 以下目录配置与工程名称无关,适用于一般的工程组织过程. 对于一般的生成可执行程序的工程,使 ...
- hdfs 数据块重分布 sbin/start-balancer.sh -threshold
数据块重分布sbin/start-balancer.sh -threshold <percentage of disk capacity>percentage of disk capa ...
- 有关android UI 线程
1. GUI线程框架 常见的 Swing, SWT框架都是作为单线程子系统来实现的,实际上不仅限于在Java中, Qt.MacOS Cocoa以及其他的环境中的GUI框架都是单线程的.虽然很多人尝试过 ...
- redis的lists类型
List是一个链表结构 , 主要功能是push . pop .获取一个范围的所有值等等 , 操作中key理解为链表的名字 . redis 的 list类型其实就是一个每个子元素都是string类型的双 ...
- Form(表单)
使用$.fn.form.defaults重写默认值对象 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用validate方法检查表单 ...
- 问题-Delphi2007跟踪变量时提示“E2171 Variable 'APolygon' inaccessible here due to optimization”
问题现象:Delphi2007跟踪变量时提示“E2171 Variable 'APolygon' inaccessible here due to optimization” . 问题原因:可能是因为 ...