Python入门教程-12 正则表达式

来源:互联网 发布:淘宝怎么举报假货 编辑:程序博客网 时间:2024/06/07 02:52

1. 概述

正则表达式是经常用到的一直字符串查找&匹配技术,通过正则表达式来处理字符串,远比字符串函数/方法要易读&易维护。

正则表达式通常并不是想象中的那么困难,只要克服心中的恐惧感、再加上一些实战(小练习即可),则可以迅速掌握常见的正则表达式技术。


2. 参考资料

Python使用的正则表达式语法,和TCL、Perl完全一样。因此,推荐一本非常好的讲解正则表达式的书籍,是《TCL/TK编程权威指南》,专门有一章循序渐进讲解正则表达式的语法。中文第三版扫描版下载地址:

  • http://download.csdn.net/detail/sxwvkb123/4498336
  • http://download.csdn.net/download/bigbird00/2826766

英文第四版的下载地址:

  • http://download.csdn.net/download/bright0923/2963033

中文看起来比较快,毕竟是母语。但有些术语翻译得很诡异,所以还是要对照英文来看。


注:上面的英文版是chm格式的文件,在Linux下面可以按照chmsee软件。


Python网站上正则表达式的页面是:https://docs.python.org/3/library/re.html,这个页面提供有大量的示例,可以迅速掌握Python正则表达式的使用方法。


3. 示例概述


下面这个例子说明了通常的使用步骤:
1. import re
2. re.match:匹配,如果失败,返回None
3. result.group():获取每个匹配项的字符串,其中group(0)总是整个匹配的字符串。

import re result = re.match("^\d+-\d+-\d+$", "2015-03-20") if result is not None: # or if result:     print "OK", result.group(0) else:    print "FAIL"result = re.match("^(\d+)-(\d+)-(\d+)$", "2015-03-20") if result:    print "OK",    year = result.group(1)     month = result.group(2)     day = result.group(3)     print "year:", year, ", month:", month, ", day:", dayelse:    print "FAIL"


4. 一些示例

4.1 浮点数

假设我们要匹配的浮点数有这几种形式:123,123.456,.456。那么可以对应下面的示例代码:


import re import sys def usage():        print "ERROR! Usage: sys.argv[0], value"def is_double(s_value):result = re.match("^(\\d+\\.||\\.)?\\d+$", s_value) if result: return Trueelse:return Falseif __name__=="__main__":        argc = len(sys.argv)        if argc != 2:            usage()            sys.exit(-1)            s_value = sys.argv[1]    print "s_value:", s_value    result = is_double(s_value)    print result  

运行效果:

C:\Python27>python e:\examples\python\is_double.py 5.6s_value: 5.6TrueC:\Python27>python e:\examples\python\is_double.py 5s_value: 5TrueC:\Python27>python e:\examples\python\is_double.py .43s_value: .43TrueC:\Python27>python e:\examples\python\is_double.py a.3s_value: a.3FalseC:\Python27>python e:\examples\python\is_double.py fdas_value: fdaFalse




todo


0 0
原创粉丝点击