《python正则表达式》.doc

《python正则表达式》.doc

ID:49465010

大小:348.01 KB

页数:12页

时间:2020-03-01

《python正则表达式》.doc_第1页
《python正则表达式》.doc_第2页
《python正则表达式》.doc_第3页
《python正则表达式》.doc_第4页
《python正则表达式》.doc_第5页
资源描述:

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

1、本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。注意:本文基于Python2.4完成;如果看到不明白的词汇请记得百度谷歌或维基,whatever。尊重作者的劳动,转载请注明作者及原文地址>.

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

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

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

5、正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。viewsourceprint?01#encoding:UTF-802importre03  04#将正则表达式编译成Pattern对象05pattern=re.compile(r'hello')06  07#使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None08match=pattern.match('helloworld!')09  10ifmatch:11    #使用Matc

6、h获得分组信息12    printmatch.group()13  14###输出###15#hellore.compile(strPattern[,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.IGNORE

10、CASE):忽略大小写(括号内是完整写法,下同)·M(MULTILINE):多行模式,改变'^'和'$'的行为(参见上图)·S(DOTALL):点任意匹配模式,改变'.'的行为·L(LOCALE):使预定字符类wWbBsS取决于当前区域设定·U(UNICODE):使预定字符类wWbBsSdD取决于unicode定义的字符属性·X(VERBOSE):详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。以下两个正则表达式是等价的:viewsourceprint?1a=re.compile(r"""d+ #theinte

11、gralp

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

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

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