重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
sub出现于re库,用法是re.sub(pattern, repl, string, count=0, flags=0)
目前成都创新互联公司已为超过千家的企业提供了网站建设、域名、网页空间、绵阳服务器托管、企业网站设计、屯昌网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
实例,re.sub(r'e','a','def',count = 1)
daf
相对于replace来说,该方法功能更强,但是运行效率更低。
replace是自带函数,用法是str.replace(old, new[, max])
实例,'abbc'.replace('b','a',1)
aabc
对比re.sub来说,replace没有正则的效果,但是运行效率更佳。请在实际应用中根据需求来定制使用方法,不要浪费资源。
第一个问题,你搞错了,不是逗号,是两个空字符串,返回的结果列比里其实有三个元素。虽然看起来很像两个。所以,它找到了符合条件的三个对象,也就是['section{First', '', ''] 。右大括号的位置是理解的关键。
第二个问题。sub方法是用你指定的字符串替换‘匹配’上的字符串。前面我们匹配上了3个位置,将它们逐一替换,就得到了'subsection{}subsection{}}subsection{}'。注意其中那个蹦单的右大括号。
第三个问题。你使用了sub的分组引用功能。它在替换的同时会用匹配上的内容替换‘\1’。你在前面匹配上了一个字符串和两个空格,将它们依次代入问题二结果中的三对大括号就能得到最终结果'subsection{section{First}subsection{}}subsection{}'
更多内容参考正则表达式和re模块
sub()方法有两个参数,第一个是用来替换的字符串,第二个是目标字符串,将用第一个参数替换第二个参数中的所有匹配项。
例1:
在使用分组的情况下,用\1,\2,\3,...来指称各分组。
例2:
这个例子中,Agent (\w)\w*匹配前面第一个单词是Agent而第二个是任意单词的项,第二个单词的第一个字符是其第一个分组(这里只有一个分组)。在替换时,这个字符被保留下来,其余被替换为****。
改成
print re.sub("\w","*",_string3)
另外r作用是取消特殊意思
比如r"\a"则匹配\a的