zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    adb连接夜神模拟器报错adb server version(36) doesn‘t match this client(41);killing...报错的问题
    python实现九九乘法表正三角和倒三角
    python之json格式的读写
    接口自动化get&post的封装
    2020-7-10-解决windows 10内存占用高问题
    2020-6-29-Python3-day1作业
    2020-6-29-Python3-指定解释器和字符编码
    2020-6-29-Python3-文件的操作
    2020-6-28-Python3-列表的操作
    2020-6-28-Python3-变量的命名规则
  • 原文地址:https://www.cnblogs.com/c-jw/p/13806705.html
Copyright © 2011-2022 走看看