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

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:", day
else:
    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 True
	else:
		return False

if __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.6
s_value: 5.6
True

C:\Python27>python e:\examples\python\is_double.py 5
s_value: 5
True

C:\Python27>python e:\examples\python\is_double.py .43
s_value: .43
True

C:\Python27>python e:\examples\python\is_double.py a.3
s_value: a.3
False

C:\Python27>python e:\examples\python\is_double.py fda
s_value: fda
False




todo


你可能感兴趣的:(Python)