python正则表达式指南

python正则表达式指南

ID:15158083

大小:276.50 KB

页数:9页

时间:2018-08-01

python正则表达式指南_第1页
python正则表达式指南_第2页
python正则表达式指南_第3页
python正则表达式指南_第4页
python正则表达式指南_第5页
资源描述:

《python正则表达式指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Python正则表达式指南本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。注意:本文基于Python2.4完成;如果看到不明白的词汇请记得百度谷歌或维基,whatever。1.正则表达式基础1.1.简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法

2、都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。下图列出了Python支持的正则表达式元字符和语法:   1.2.数量词的贪婪模式与非贪婪模式正则表达式通常用于在文本中查找

3、匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。1.3.反斜杠的困扰与大多数编程语言相同,正则表达式里使用""作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Py

4、thon里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\"表示。同样,匹配一个数字的"\d"可以写成r"d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。1.4.匹配模式正则表达式提供了一些可用的匹配模式,比如忽略大小写、多行匹配等,这部分内容将在Pattern类的工厂方法re.compile(pattern[,flags])中一起介绍。2.re模块2.1.开始使用rePython通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文

5、本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。?123456789101112131415#encoding:UTF-8import re #将正则表达式编译成Pattern对象pattern= re.compile(r'hello') #使用Pattern匹配文本,获得匹配结果,无法匹配时将返回Nonematch= pattern.match('helloworld!') if match:    #使用Match获得分组信息    print match.group() ###输出####hellore.compile(strPat

6、tern[,flag]):这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。第二个参数flag是匹配模式,取值可以使用按位或运算符'

7、'表示同时生效,比如re.I

8、re.M。另外,你也可以在regex字符串中指定模式,比如re.compile('pattern',re.I

9、re.M)与re.compile('(?im)pattern')是等价的。 可选值有:·re.I(re.IGNORECASE):忽略大小写(括号内是完整写法,下同)·M(MULTILINE):多行模式,改变'^'和'$'的行为(参见上图)·S(DOTALL):点任意匹

10、配模式,改变'.'的行为·L(LOCALE):使预定字符类wWbBsS取决于当前区域设定·U(UNICODE):使预定字符类wWbBsSdD取决于unicode定义的字符属性·X(VERBOSE):详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。以下两个正则表达式是等价的:?1234a= re.compile(r"""d+ #theintegralpart                   .   #thedecimalpoint  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。