• py_正则表达式练习


    正则表达式:

    #正则表达式
    #键盘数字6上的符号,^表示行的开始,$ 表示行的结束
    
    #test = "tm queal Tomorrow Moon"
    '''
    ^tm #匹配tm开头的文字
    $tm #匹配
    '''
    # 元字符
    # /b /w
    '''
    #字符类
        [0-9] 等价于 d[a-z0-9A-Z]等价于w(只考虑英文)
    #排除字符
        ^ 如在括号里面,表示排除这些字符 eg:[^a-zA-Z]
    #选择字符
        |表示选择,
            (^d{15}$)|(^d(18)$)|(^d{17}(d|X|x))$  #匹配第一代身份证,第二代身份证
            解释:^表示开始,为15个数字,并且以数字结尾,
                或者以数字开头,18位的数字,并且以数字结尾,
                或以数字开头,17位的数字,并且以X或x结尾
    #转义字符:
        例:需要匹配 127.0.0.1    [1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
        
    '''
     
    代码 元字符说明
    . 匹配换行符以外的任意字符
    w 匹配字母,数字,下划线或汉字
    W 匹配字母,数字,下划线或汉字以外的字符
    s 匹配单个空白符(包括Tab和换行符)
    S 匹配单个空白符(包括Tab和换行符)以外的字符
    d 匹配的数字
     匹配单词的开始或者结束,但是通常是分界符是空格,标点符号或者换行
    ^ 匹配字符的开始
    $ 匹配字符的结束
       
    限定符 说明 举例
    匹配前面字符的0次或者1次 colou?r ,可匹配到color和colour
    + 匹配前面字符的一次或者多次 go+gle,可以匹配到:gogle,goo…ogle
    * 匹配前面的字符的零次或者多次 go*gle,可以匹配到:ggle,goo…ogle
    {n} 匹配前面字符的n次 go{2},可以匹配到:google
    {n,} 匹配前面字符最少n次 go{2,}gle,可以匹配到:google,goo...ogle
    {n,m} 匹配前面字符最少n次,最多m次 google{1,3} 可以匹配到:google,googleee
    
    
    import re   #导入正则表达式模块  
     
     
    # 在py中match()
    # re.match(pattern,string,[flags])
    
    #  w 匹配字母数字下划线或者数字 +匹配前面字符的一次或者多次
    # r 代表原始字符,防止出现转义  
    pattern = r'mr_w+' 
    string = "MR_CODE mr_code"
    match = re.match(pattern,string,re.I) # i表示不区分大小写
    print(match)
    #ps <re.Match object; span=(0, 7), match='MR_CODE'>   
    #  因为不匹配空格,故未匹配到 mr_code
    #  将空格去掉后,MR_CODEmr_code 则可匹配到 MR_CODEmr_code
    
    pattern2 = r'mr_w+' 
    string2 = "sssMR_CODE mr_code"
    match2 = re.match(pattern2,string2,re.I) # i表示不区分大小写
    print(match2)
    # 若未匹配到,返回None
    
    
    # 在py中search()
    pattern3 = r'mr_w+' 
    string3 = "sssMR_CODE mr_code"
    search = re.search(pattern3,string3,re.I) # i表示不区分大小写
    print(search)
    # <re.Match object; span=(3, 10), match='MR_CODE'>
    
    pattern4 = r'mr_w+' 
    string4 = "ssssssMR_CODE mr_code"
    search2 = re.search(pattern4,string4,re.I) # i表示不区分大小写
    print(search2)
    # <re.Match object; span=(6, 13), match='MR_CODE'>
    
    
    # 在py中findall()
    pattern5 = r'mr_w+' 
    string5 = "ssssssMR_CODE mr_code"
    search5 = re.findall(pattern5,string5,re.I) # i表示不区分大小写
    print(search5)
    print("findall()")
    
    # 在py中sub() 替换
    pattern6 = r'1[34578]d{9}'
    string6 = "中奖号码为:89332,联系电话:13611111111"
    search6 = re.sub(pattern6,'1我爱学py',string6) # i表示不区分大小写
    print("sub()")
    print(search6)
    # 中奖号码为:89332,联系电话:1我爱学py
    

      

  • 相关阅读:
    ASP.NET Core 集成 WebSocket
    如何在CentOS7上安装桌面环境?
    Visual Studio 2017 远程调试(Remote Debugger)应用
    cmd sc命令进行服务操作
    EntityFrameworkCode 操作MySql 相关问题
    Windows下安装PHP开发环境
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    System.Runtime.InteropServices.COMException (0x800A03EC): 无法访问文件
    c# WinFo判断当前程序是否已经启动或存在的几种方式
    MVC自定义视图引擎地址
  • 原文地址:https://www.cnblogs.com/c-jw/p/12662391.html
Copyright © 2020-2023  润新知