Python 2.7を使用re.sub
して、次の例では単純な後方参照を使用しています。
re.sub('-{1,2}', r'\g<0> ', 'pro----gram-files')
期待どおりに次の文字列を出力します。
'pro-- -- gram- files'
次の例は同じだと思いますが、そうではありません。
def dashrepl(matchobj):
return r'\g<0> '
re.sub('-{1,2}', dashrepl, 'pro----gram-files')
これにより、次の予期しない出力が得られます。
'pro\\g<0> \\g<0> gram\\g<0> files'
2 つの例の出力が異なるのはなぜですか? これを説明するドキュメントで何か見逃していましたか? この動作が私が期待したものよりも好ましいという特定の理由はありますか? 置換関数で後方参照を使用する方法はありますか?