python re.sub用法_re.sub用法

re.sub功能是对于一个输入的字符串,利用正则表达式,来实现字符串替换处理的功能返回处理后的字符串

re.sub共有五个参数

三个必选参数pattern,repl,string

两个可选参数count,flags

pattern,表示正则中的模式字符串

反斜杠加数字(\n)表示对应匹配的也就是用之前匹配到的字符串补充到这个位置,例如

将“hello python,ni hao c,zai jian python”替换为php,代码如下替换成功

importre

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

若改为下面这样

importre

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对应命名了的组

importre

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>表示用第二个匹配到的字符串进行替换,也就是标红部分

也可以用命名分组的方式

importre

inputStr="hello python,ni hao c,zai jian python"replaceStr=re.sub(r"hello (?P\w+),ni hao (?P\w+),zai jian \1","\g",inputStr)print replaceStr

输出结果为c,将每个匹配的字符串进行了命名,word2匹配到的是c

如果是函数,则可以这样使用

importredefpythonSubDemo():

inputStr="hello 123 world 456";def_add111(matched):

intStr=matched.group("number")

intValue=int(intStr)

addValue=intValue+111addValueStr=str(addValue)returnaddValueStr

replacedStr=re.sub("(?P\d+)",_add111,inputStr)printreplacedStrif __name__=="__main__":

pythonSubDemo()

主要代码解释,匹配字符串中的数字,将其命名为组number,一共匹配到两个123和456

将匹配到的东西执行_add111函数,判断是不是组名为number,然后执行

string,要处理的字符串

count,限定替换的个数,默认为替换所有

flags,匹配模式,可以使用按位或‘|‘表示同时生效,也可以在正则表达式中指定。

re.I忽略大小写

re.L表示特殊字符集\w,\W,\b,\B,\s,\S

re.M表示多行模式

re.S ‘.’包括换行符在内的任意字符

re.U表示特殊字符集\w,\W,\b,\B,\d,\D,\s,\D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值