前言:
可参考:https://www.cnblogs.com/dream66/p/12953729.html
一、re模块之macth方法和search方法区别:
match方法,基础写法一
import re #group()方法得到匹配的字符串,如果字符串没有匹配,则返回None value = re.match( 'class\d8' , 'class58' ).group() print( value )
match方法,基础写法二
import re #创建正则表达式对象 str_c = re.compile('class\d8') #group()方法得到匹配的字符串,如果字符串没有匹配,则返回None value = str_c.match('class58').group() print( value )
上述两种写法都可以完成 re模块的应用,方法一是直接把正则表达式放入match的第一个参数中;方法二是先创建正则表达式对象,再由对象调用match方法。
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"}