zoukankan      html  css  js  c++  java
  • Python学习-38.Python中的正则表达式(二)

    在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及其他方法中,若需要使用松散正则表达式,则也需要使用该参数。

  • 相关阅读:
    jQuery实现图片延迟加载
    小猪学设计模式之—装饰者模式
    设计原则—依赖倒转原则
    ASP.NET MVC 在子页中引用头文件
    关于博客
    关于借钱
    面向对象编程(OOP)基础之UML基础
    C#抽象类、抽象方法、抽象属性
    小猪学设计模式——门面模式(外观模式)
    Eclipse 快捷键
  • 原文地址:https://www.cnblogs.com/h82258652/p/4000995.html
Copyright © 2011-2022 走看看