码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习-38.Python中的正则表达式(二)

时间:2014-09-29 22:47:01      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   使用   sp   div   问题   c   

在Python中,正则表达式还有较其他编程语言有特色的地方。那就是支持松散正则表达式了。

在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了。而松散正则表达式就是解决这一问题的办法。

用上一次分组的代码作为例子:

1 import re
2 userinput = input("please input test string:")
3 m = re.match(r(\d{3,4})-(\d{8}),userinput)
4 if m:
5     print(区号: + m.group(1))
6     print(号码: + m.group(2))
7 else:
8     print(格式错误)

现在假设我们离编写该代码隔了很长一段时间了,并不知道\d{3,4}和\d{8}的意义了。

如果一开始就写注释那多好,但我们总不能写

1 # \d{3,4}代表区号,\d{8}代表号码

这样的注释吧。Don‘t repeat youself。松散正则表达式就用上了。

 1 import re
 2 userinput = input("please input test string:")
 3 regex = r‘‘‘
 4    (
 5    \d{3,4} # 区号
 6    )
 7    -       # 区号与号码间的分隔符
 8    (
 9    \d{8}   # 号码
10    )
11 ‘‘‘
12 m = re.match(regex,userinput,re.VERBOSE)
13 if m:
14     print(区号: + m.group(1))
15     print(号码: + m.group(2))
16 else:
17     print(格式错误)

‘‘‘代表多行文本(同时也可用作代表文档注释)。

则值得注意的是,现在字符串中多出了很多空白以及注释(尽管他们现在作为字符串的一部分被编译),但运行的效果是一致的。

还有一点要注意的是,在re.match方法的最后,使用了re.VERBOSE参数,这指明当前正则表达式为松散正则表达式。在re.split及其他方法中,若需要使用松散正则表达式,则也需要使用该参数。

Python学习-38.Python中的正则表达式(二)

标签:style   blog   color   os   使用   sp   div   问题   c   

原文地址:http://www.cnblogs.com/h82258652/p/4000995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!