次の実行を検討してください。
Python 2.7.2 (default, Sep 19 2012, 01:44:39)
[GCC 4.2.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> old_value=1
>>> new_value=2
>>> re.sub('0x(..)'+format(old_value, '02x'), '0x\\1x'+format(new_value, '02x'), '0xab01')
'0xabx02'
>>> re.sub('0x(..)'+format(old_value, '02x'), '0x\\1'+format(new_value, '02x'), '0xab01')
'0xB'
したがって、基本的に、16 進数値を変更しようとしていますが、最下位 2 桁のみです。この例では、入力文字列に存在する場合、「01」を「02」に置き換えようとしています。最初の re.sub() 呼び出しの出力が期待されます。ただし、2番目の呼び出しの出力を完全に理解できません(もちろん、やりたいことです)。これは長い間私を困惑させているものであり、私はそれがPythonのバグである可能性があると尋ねる傾向があります. または、ここで何か不足していますか?