标签:大小 ret 就是 inpu 部分 转义字符 NPU 实现 mat
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,表示要被替换的,可以是字符串也可以是函数,
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
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
import re def pythonSubDemo(): inputStr="hello 123 world 456"; def _add111(matched): intStr=matched.group("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,然后执行
标签:大小 ret 就是 inpu 部分 转义字符 NPU 实现 mat
原文地址:https://www.cnblogs.com/z-x-y/p/9633212.html