首页 > 代码库 > Python学习-38.Python中的正则表达式(二)

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

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

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

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

1 import re2 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中的正则表达式(二)