zoukankan      html  css  js  c++  java
  • day23 Pythonpython 本文re模块

    re模块用于对python的正则表达式的操作。

    字符:

      . 匹配除换行符以外的任意字符
      w 匹配字母或数字或下划线或汉字
      s 匹配任意的空白符
      d 匹配数字
       匹配单词的开始或结束
      ^ 匹配字符串的开始
      $ 匹配字符串的结束

    次数:

       * 重复零次或更多次
      + 重复一次或更多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次

    一、普通字符:

    .     通配符一个.只匹配一个字符

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("a..d","avsdcabcd"))
    
    结果:
    ['abcd']
    ['avsd', 'abcd']
    

     ^    以什么开头

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("^avd","avddddcaavddbcd"))
    
    结果:
    ['abcd']
    ['avd']
    

     $  以什么结尾

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd$","avddddcaavddbcavd"))
    
    结果:
    ['abcd']
    ['avd']
    

     *  代表匹配*前面的字符 重复0到无穷次

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd*","avddddcaavddbcavavd"))
    
    结果:
    ['abcd']
    ['avdddd', 'avdd', 'av', 'avd']
    

     +  代表匹配+前面的字符 重复1到无穷次

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd+","avddddcaavddbcavavd"))
    
    结果:
    ['abcd']
    ['avdddd', 'avdd', 'avd']

    *和+属于贪婪匹配

    ? 代表匹配?前面的字符的0次或者是1次

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd?","avddddcaavddbcavavd"))
    
    结果:
    ['abcd']
    ['avd', 'avd', 'av', 'avd'] 

    {}可以指定重复几次

    {0,} 代表重复{}前面字符的0到无穷次,相当于*

    {1,} 代表重复{}前面字符的1到无穷次,相当于+

    {0,1}代表重复{}前面字符的0到1次,相当于?

    {6}代表重复{}前面字符的6次

    {1,3}代表重复{}前面字符的1次到3次 

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd{3}","avddddcaavddbcavavd"))
    
    print(re.findall("avd{3}","avddddcaavddbcavavd"))
    print(re.findall("avd{2,4}","avddddcaavddbcavavd"))
    print(re.findall("avd{0}","avddddcaavddbcavavd"))
    print(re.findall("avd{7}","avddddcaavddbcavavd"))
    
    结果:
    ['abcd']
    ['avddd']
    ['avddd']
    ['avdddd', 'avdd']
    ['av', 'av', 'av', 'av']
    []
    

     惰性匹配*?  只要匹配出*前面的字符的0次就不匹配了

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd*?","avddddcaavddbcavavd"))
    
    结果:
    ['abcd']
    ['av', 'av', 'av', 'av']
    

     惰性匹配+?  只要匹配出+前面的字符的1次就不匹配了

    import re
    print(re.findall("abcd","asdcabcd"))
    print(re.findall("avd+?","avddddcaavddbcavavd"))
    
    结果:
    ['abcd']
    ['avd', 'avd', 'avd']
    

     二、字符集

    1、或的功能

    import re
    print(re.findall("x[yz]","xyzzzxyzxssdzx"))
    print(re.findall("x[yz]","xyzzzxzsdxzzy"))
    print(re.findall("x[yz]p","xypzzzxzsdxzpzy"))
    
    结果:
    ['xy', 'xy']
    ['xy', 'xz', 'xz']
    ['xyp', 'xzp']
    

     2、[]中得特殊符号-  匹配字母

    取小写字符

    import re
    print(re.findall("[a-z]","as32eer45ttt564"))
    
    结果:
    ['a', 's', 'e', 'e', 'r', 't', 't', 't']
    

     取大写字

    import re
    print(re.findall("[A-Z]","as32eADCrc45ttDWSDS564"))
    
    结果:
    ['A', 'D', 'C', 'D', 'W', 'S', 'D', 'S']
    

     取大小写字母

    import re
    print(re.findall("[a-zA-Z]","as32eADCrc45ttDWSDS564"))
    
    结果:
    ['a', 's', 'e', 'A', 'D', 'C', 'r', 'c', 't', 't', 'D', 'W', 'S', 'D', 'S']
    

     取DC后面跟一个字母 取ab后面跟0个或者1 个字母

    import re
    print(re.findall("DC[a-z]?","as32eADCrc45ttDCWSDS564"))
    
    结果:
    ['DCr', 'DC']

    3、[]里面的特殊符号^   是取反的意思

    4、[]里面的特殊符号    叫转义符  最牛的一个斜杠

    d   匹配任意十进制数,相当于[0-9]

    D   匹配任意非数字字符,相当于[^0-9]

    s   匹配任何空白字符

    S   匹配任何非空白字符

    w   匹配任何字符数字字符,相当于[a-zA-Z0-9_]

    W   匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]

       匹配一个特殊字符边界,比如空格 & # 等

    未完待续。。。。。

  • 相关阅读:
    阅读《构建之法(第三版)》提出的问题
    职位部门管理系统
    JSON
    hashcode()和equals()方法
    JSF和Facelets的生命周期
    认识applet
    认识ajax
    hello1.java分析
    vue中的防抖和节流
    vue项目搭建
  • 原文地址:https://www.cnblogs.com/charon2/p/10406736.html
Copyright © 2011-2022 走看看