執行個體在python2.6中測試通過,對python3.1需要相應的修改。
將下面字串中的目錄替換為新的目錄c:\test\2011 或c:\test\2012。
Hello
dir=c:\test\2010
How are you!
一 使用Regex Match Tester來測試,如下:
二 程式碼範例
import re
oldline = 'dir=c:\\test\\2010'
str1 = 'Hello\n' + oldline +'\nHow are you!'
print str1
print '------------------------------------'
newline = 'dir=c:\\test\\2011'
reobj = re.compile('^(dir=)(.*)$',re.M)
newStr1 = reobj.sub(newline, str1 )
print newStr1
print '------------------------------------'
newdir = 'c:\\test\\2011'
def f(m):
return m.group(1) + newdir
newNewStr1 = reobj.sub(f, str1 )
print newNewStr1
print '------------------------------------'
三 運行結果
四 解析
1)使用re.compile來產生Regex對象reobj,且通過re.M來設定為多行匹配;
2)調用reobj的sub方法,sub方法的原型為RegexObject.sub(repl,string[,count=0]),其中repl可以為字串或函數,如果是字串時,字串中所有的\均被處理,例如\n表示新行,\r表示換行,\g<name> = \g<2> = \2表示前面匹配到的group(2),其他的沒有特殊意義的如\j則保持原樣;
3)如果repl為函數時,此函數只有一個參數為matchobject;
以上的問題中因為repl中有\2,所以必須使用函數來處理!
完!