re.sub⽤法
re.sub功能是对于⼀个输⼊的字符串,利⽤正则表达式,来实现字符串替换处理的功能返回处理后的字符串re.sub共有五个参数
三个必选参数pattern,repl,string
两个可选参数count,flags
pattern,表⽰正则中的模式字符串
  反斜杠加数字(\n)表⽰对应匹配的也就是⽤之前匹配到的字符串补充到这个位置,例如
  将“hello python,ni hao c,zai jian python”替换为php,代码如下替换成功
import re
inputstr="hello python,ni hao c,zai jian python"
replacestr=re.sub(r"hello(\w+),ni hao(\w+),zai jian \1","php",inputstr)
print(replacestr)
代码中的\1表⽰第⼀次匹配到的字符串也就是“python”,这样可以匹配原来的字符串,从⽽整个字符串替换为php 若改为下⾯这样
import re
inputstr="hello python,ni hao c,zai jian python"
replacestr=re.sub(r"hello (\w+),ni hao (\w+),zai jian \2","php",inputstr)
print(replacestr)
代码中的\2表⽰第⼆次匹配到的字符串也就是“c”,显然不能和原来的字符串匹配,所以不会替换
这⾥是为了说明区别\n代表的是第n次所匹配到字符串,⽽不是第n次⽤到的匹配模式
repl,表⽰要被替换的,可以是字符串也可以是函数,
如果是字符串,则所有的反斜杠转义字符都会被处理
\n:被处理为对应的换⾏符
\r :被处理为回车符
不能被识别的转义字符,则只是被识别为普通的字符,例如:\j被处理为j这个字母本⾝
反斜杠加g以及中括号内⼀个名字,即\g<name>对应命名了的组
import re
inputStr="hello python,ni hao c,zai jian python"
replaceStr=re.sub(r"hello (\w+),ni hao (\w+),zai jian \1","\g<2>",inputStr)
print replaceStr
运⾏结束输出c,这⾥的g<2>表⽰⽤第⼆个匹配到的字符串进⾏替换,也就是标红部分
也可以⽤命名分组的⽅式
import re
inputStr="hello python,ni hao c,zai jian python"
replaceStr=re.sub(r"hello (?P<word1>\w+),ni hao (?P<word2>\w+),zai jian \1","\g<word2>",inputStr)
print replaceStr
输出结果为c,将每个匹配的字符串进⾏了命名,word2匹配到的是c
如果是函数,则可以这样使⽤
import re
def pythonSubDemo():
inputStr="hello 123 world 456";
def _add111(matched):
up("number")
intValue=int(intStr)
addValue=intValue+111
addValueStr=str(addValue)
return addValueStr
replacedStr=re.sub("(?P<number>\d+)",_add111,inputStr)
print replacedStr
if__name__=="__main__":
pythonSubDemo()
主要代码解释,匹配字符串中的数字,将其命名为组number,⼀共匹配到两个123和456将匹配到的东西执⾏_add111函数,判断是不是组名为number,然后执⾏
string,要处理的字符串
count,限定替换的个数,默认为替换所有
flags,匹配模式,可以使⽤按位或‘|‘表⽰同时⽣效,也可以在正则表达式中指定。
re.I忽略⼤⼩写
re.L表⽰特殊字符集\w,\W,\b,\B,\s,\S
re.M表⽰多⾏模式
python正则表达式判断
re.S ‘.’包括换⾏符在内的任意字符
re.U表⽰特殊字符集\w,\W,\b,\B,\d,\D,\s,\D