前言:

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

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

1.1 match方法,基础写法一

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

 1.2 match方法,基础写法二

import re #创建正则表达式对象 str_c = re.compile('class\d8') #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"}

posted on 2020-07-12 11:35  喵小超  阅读(191)  评论(0编辑  收藏  举报