文字列の一部を置き換える正規表現を作成しようとしています。これは文字列の例です:
string = u'/nl/nl/1681/1/0/a/all/'
pattern = r'(/\w{2}/\w{2}/)(\d+)/(\d+)(/\d+/[ans]/all/)'
pattern_obj = re.compile(pattern)
パターンは 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/'
私は何か間違ったことをしているに違いありませんが、何がわかりません。誰でも私を助けることができますか?