python類庫31 正規表示式之sub

2022-02-18 10:45:37 字數 1421 閱讀 9024

例項在python2.6中測試通過,對python3.1需要相應的修改。 

將下面字串中的目錄替換為新的目錄c:\test\2011 或c:\test\2012。

hello

dir=c:\test\2010

how are you!

一 使用regex match tester來測試,如下:

二 **示例 

import

reoldline ='

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來產生正規表示式物件reobj,且通過re.m來設定為多行匹配;

2)呼叫reobj的sub方法,sub方法的原型為regexobject.sub(repl,string[,count=0]),其中repl可以為字串或函式,如果是字串時,字串中所有的\均被處理,例如\n表示新行,\r表示換行,\g= \g<2> = \2表示前面匹配到的group(2),其他的沒有特殊意義的如\j則保持原樣;

3)如果repl為函式時,此函式只有乙個引數為matchobject;

以上的問題中因為repl中有\2,所以必須使用函式來處理!

完!

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...