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

  • 相关阅读:
    IDEA的JDBC报错解决
    java注解
    Java反射
    javaIO
    工程师的认知
    前端的一些性能提升
    ES6函数的扩展
    2020新年愿望
    高维护性的javascript
    Chrome Dev tools的几点小技巧
  • 原文地址:https://www.cnblogs.com/h82258652/p/4000995.html
Copyright © 2011-2022 走看看