zoukankan      html  css  js  c++  java
  • Python进阶(十二)----re模块

    Python进阶(十二)----re模块

    一丶re模块

    ​ re模块是python将正则表达式封装之后的一个模块.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

    #正则表达式:  从一串字符中,找出你想要的字符串.
    
    import  re
    
    ### 单个元字符的匹配
    
    # W  除了数字 ,字母,中文, 下划线
    print(re.findall('W','dsadas1231 +1-+2*/,.'))
    # w  匹配中文,数字,字母,下划线
    print(re.findall('w','jdsa213-+*/,./:[]'))
    
    # s  匹配 :空格 	 
    
    print(re.findall('s','a 	 
     d '))
    # S  匹配: 非 空格 	 
    
    print(re.findall('S','	 
    as 	 da '))
    
    #d   只匹配数字:
    print(re.findall('d','123da13d'))
    #D   值匹配非数字
    print(re.findall('D','dsa1321'))
    
    # A 和 ^  从开头开始匹配
    print(re.findall('Ahe','he kf danc j he ,d'))
    print(re.findall('^he','he kf danc j he ,d'))
    
    
    # $    从末尾开始匹配
    print(re.findall('aaa','dsaaaddssaaa'))
    print(re.findall('aaa$$','dsaaaddssa1aaa'))
    
    # 
     	
    print(re.findall('
    ','d
      d
     ds	a'))
    print(re.findall('	','d
      d
     ds	a'))
    
    
    
    #### 元字符匹配
    
    # . 匹配任意一个字符
        # 如果匹配成功光标则移到匹配成功的最后的字符
        # 如果匹配未成功光标则向下移动一位再次匹配
    print(re.findall('a.b','aa ,,dan a1b'))
    
    # ? 匹配 0个 或者 1个 由左边字符定义的片段
    print(re.findall('a?b','ab aabb  aaabbb')) # ['ab', 'ab', 'b', 'ab', 'b', 'b']
    print(re.findall('a?b','sb ab aabb')) # [b, ab ,ab ,b]
    
    # *  匹配 0个 或者 多个 左边字符表达式, 满足贪婪模式(即:只要符合就ab都获取)
    print(re.findall('a*b','ab abb a b aabb')) # ab ab b b aab b
    
    
    # + 匹配 1个 或者 多个 左边字符表达式 ,满足贪婪模式
    print(re.findall('a+b','ab abab aab bba aabb b')) #ab ab aab aab
    
    
    #{m,n} 匹配m个至n个(能取到n)个左边字符表达式. 满足贪婪模式
    print(re.findall('a{1,3}b','ab abb b bb aaab aaaaaab')) # ab ab aaab aaab
    
    # .* 贪婪匹配 从头到尾
    print(re.findall('a.*b','aaa bbbliye dkjsah bnb'))
    print(re.findall('a.*b','aaa b
    bbliye dkjsah bnb'))
    
    # .*?   此时的? 不是对左边的字符进行0次或者1次的匹配
    # 而只是针对.* 这种贪婪模式进行一种限定:告知它要遵循非贪婪模式, 推荐使用!!
    # 0给或者多个
    print(re.findall('a.*?b','ab a#b bb abb aabb')) # ab a#b  ab aab
    
    
    
    ### 常用的方法
    # findall() 找所有
    print(re.findall('正则表达式','ab a#b bb abb aabb')) # 根据正则遍历整个字符  ,返回成一个列表
    
    
    # search() 方法 找到第一个符合字符的就返回 ,返回成一个对象,  以对象.group()进行取值
    ret=re.search('正则',字符串)    
    print(re.group())  # 取值
    
     
    #match() 方法 从头开始找符合正则的字符串,找到返回一个对象,找不到返回None   以对象.group()进行取值
    # search() 方法 + ^(从头开始)  相当于 match()方法
    ret=re.match('正则','字符串')   # 从头开始 
    print(ret.group())  # 取值 
    

    关于正则:

        正则也是一门语言.如果只是python的初学者.没有必要深究,掌握几个简单的正则如何写. 就ok了.(web项目中的url可以进行简单的正则编写,更深层次的理解正则,得自学~)
    

    转载一篇关于正则的详细博客:正则写的很全面

  • 相关阅读:
    react native 添加mobx
    js-(19,999,999.00)
    html移动端 -- meta-模板 + rem
    HTML5 移动端头部标签
    js
    html --- rem
    es6--async--await
    nrm+nvm
    js-call-apply
    SQL映射文件
  • 原文地址:https://www.cnblogs.com/dengz/p/11122843.html
Copyright © 2011-2022 走看看