Python语言中的正则表达式学习
来源:互联网 发布:js select 设置选中项 编辑:程序博客网 时间:2024/06/04 19:56
本文转载自http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
1. 正则表达式基础
1.1. 简单介绍
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。下图展示了使用正则表达式进行匹配的流程:
正则表达式的大致匹配过程是:
依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。
Python支持的正则表达式元字符和语法:
1.2. 数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串。
Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。
例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。
1.3. 反斜杠的困扰
与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。
假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。
Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
1.4. 匹配模式
正则表达式提供了一些可用的匹配模式,比如忽略大小写、多行匹配等,这部分内容将在Pattern类的工厂方法re.compile(pattern[, flags])中一起介绍。
2. re模块
2.1. 开始使用re
Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。
#coding=UTF-8'''Created on Sep 30, 2014@author: liu.chunming'''import re#将正则表达式编译成pattern对象pattern=re.compile(r"hello",flags=0)#利用pattern对象匹配文本,无法匹配时返回Nonematch=pattern.match("hello world!")if match is not None: #使用match获取匹配的分组信息 groups=match.group() print groups
输出:
hello
- Python语言中的正则表达式学习
- Python中的正则表达式学习总结
- python中的正则表达式的学习
- python中的正则表达式的学习
- python中的正则表达式的学习
- python中的正则表达式的学习
- 【学习笔记】Python中的正则表达式re
- python 中的正则表达式
- python中的正则表达式
- Python中的正则表达式
- Python中的正则表达式
- Python中的正则表达式
- python中的正则表达式
- Python中的正则表达式
- python中的正则表达式
- python中的正则表达式
- Python中的正则表达式
- python中的正则表达式
- UIViewController生命周期控制
- poj3237 树链剖分
- commons-beanutils使用
- WordCount运行原理结合代码详细分析
- centos6.4 inotify+rsync实现文件同步设置
- Python语言中的正则表达式学习
- 使用AFNetworking的注意事项
- 文件浏览器 + 优酷菜单 + 下拉菜单 + 自定义开关按钮
- 六角填数---第五届蓝桥杯
- 7天hadoop视频教程
- 第十一篇 ANDROID 系统网络连接和管理机制与架构
- Adaboost算法的前世今生
- commons-digester使用
- 操作必须使用一个可更新的查询