2012-09-13 67 views
1

我想創建一個正則表達式來替換部分字符串。這是字符串的示例:Python的正則表達式替換不工作,因爲我期望

​​

該模式指定了4組。如果你做搜索,結果如下:

m = pattern_obj.search(string) 
m.group(0) -> u'/nl/nl/1681/1/0/a/all/' 
m.group(1) -> u'/nl/nl/' 
m.group(2) -> u'1681' 
m.group(2) -> u'1' 
m.group(4) -> u'/0/a/all/' 

到目前爲止好。現在,我指定一個替換字符串如下:

replacement = r'\1' + '1000' + '/' + '20' + r'\4' 

,併發出以下聲明:

pattern_obj.sub(replacement,string) 

,這導致:

u'H00/20/0/a/all/' 

我預計:

u'/nl/nl/1000/20/0/a/all/' 

我一定在做點什麼錯,但我不知道是什麼。有人可以幫我嗎?

回答

3

你替換字符串,當它完全組裝,是\11000/20\4\110被解釋爲八進制轉義爲H而不是向後引用後跟10組號碼1。

您需要編寫\g<1>而不是\1以確保它是明確的後向引用。見the documentation for re.sub

+0

非常感謝 – Henri

相關問題