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可以进行简单的正则编写,更深层次的理解正则,得自学~)
    

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

  • 相关阅读:
    深入Android 【一】 —— 序及开篇
    Android中ContentProvider和ContentResolver使用入门
    深入Android 【六】 —— 界面构造
    The service cannot be activated because it does not support ASP.NET compatibility. ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config or add the AspNetCompatibilityRequirements attribute to the ser
    Dynamic Business代码片段总结
    对文件的BuildAction以content,resource两种方式的读取
    paraview 3.12.0 windows下编译成功 小记
    百度网盘PanDownload使用Aria2满速下载
    netdata的安装与使用
    用PS给证件照排版教程
  • 原文地址:https://www.cnblogs.com/dengz/p/11122843.html
Copyright © 2011-2022 走看看