首页 > 代码库 > 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中的正则表达式(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。