zoukankan      html  css  js  c++  java
  • python系列——正则表达式之re模块02

    前言:

    可参考:https://www.cnblogs.com/dream66/p/12953729.html

    一、re模块之macth方法和search方法区别:

    1.1 match方法,基础写法一

    import re #group()方法得到匹配的字符串,如果字符串没有匹配,则返回None value = re.match( 'classd8' , 'class58' ).group() print( value )

     1.2 match方法,基础写法二

    import re #创建正则表达式对象 str_c = re.compile('classd8') #group()方法得到匹配的字符串,如果字符串没有匹配,则返回None value = str_c.match('class58').group() print( value )

    上述两种写法都可以完成 re模块的应用,方法一是直接把正则表达式放入match的第一个参数中;方法二是先创建正则表达式对象,再由对象调用match方法。

    1.3 search方法,基础写法

    import re
    
    #创建正则表达式对象
    str_c = re.compile('d8')
    
    value = str_c.search('class58').group()
    print( value )

    若把上述search()改为match()方法,则会报错,因为 match()仅在字符串的开头匹配,search()检查匹配项,在字符串中的任何位置检查匹配项。

    二、re模块中的函数介绍

    re.compile(pattern,flags = 0 ):用于编译正则表达式,生成一个正则表达式对象
    re.search(pattern,string,flags = 0 ):扫描字符串以查找正则表达式模式产生匹配项的第一个位置 ,然后返回相应的match对象。
    re.match(pattern,string,flags = 0 ):如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。
    re.fullmatch(pattern,string,flags = 0 ):如果整个字符串与正则表达式模式匹配,则返回相应的match对象。
    re.split(pattern,string,maxsplit = 0,flags = 0 ):通过出现模式来拆分字符串。
    re.findall(pattern,string,flags = 0 ):以string列表形式返回string中pattern的所有非重叠匹配项。
    re.finditer(pattern,string,flags = 0 ):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。
    re.sub(pattern,repl,string,count = 0,flags = 0 ):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。 
    以下为re.sub函数举例:
    str1 = '{"access_token":${token},${age}==>${number}}'
    str1 = re.sub('\${w+}','123456',str1,1)       #使用一个sub函数替换
    print( str1 )
    输出结果:{"access_token":123456,${age}==>${number}}
    str1 = '{"access_token":${token},${age}==>${number}}'
    str1 = re.sub('\${w+}','123456',str1,1)   #替换字符串中最左边的不重叠模式所获得的字符串$
    str1 = re.sub('\${w+}','123',str1,1)        #使用两个sub函数替换
    print( str1 )
    输出结果:{"access_token":123456,123==>${number}}
    str1 = '{"access_token":${token},${age}==>${number}}'
    
    str1 = re.sub('\${w+}','123456',str1,1)   #替换字符串中最左边的不重叠模式所获得的字符串$
    str1 = re.sub('\${w+}','123',str1,2)
    print( str1 )
    输出结果:{"access_token":123456,123==>123}
    str1 = '{"access_token":${token},${age}==>${number}}'
    
    str1 = re.sub('\${w+}','123456',str1,1)   #替换字符串中最左边的不重叠模式所获得的字符串$
    str1 = re.sub('\${w+}','123',str1,1)
    str1 = re.sub('\${w+}','12',str1,1)    #使用三个sub函数替换
    print( str1 )
    输出结果:{"access_token":123456,123==>12}

       re.replace函数实战:

    temp_variables = {"token":"hello"}
    
    params = '{"access_token":${token}}'   # 建议考虑1个以上的情况
    value = re.findall('\${w+}',params)[0]
    print(value)
    params = params.replace( value,'"%s"'%temp_variables.get(value[2:-1]) ) # '"'+%temp_variables.get(value[2:-1])+'"'
    print( params )
    验证结果:

    ${token}
    {"access_token":"hello"}

  • 相关阅读:
    手机号/身份证加星处理
    手机号,邮箱等验证表达式
    导入Excel工具类
    ajax 跨域的解决 cors
    centos7 防火墙命令
    redis 常见问题总结
    数据库(1)
    设计模式和常用的设计模式
    mvc 模式 与各部分的实现
    线程基础(1)
  • 原文地址:https://www.cnblogs.com/miaoxiaochao/p/13287824.html
Copyright © 2011-2022 走看看