2016-06-28 10 views
-3

以下に示すBoilerとをキャプチャすると、それらは\ 1と\ 2として参照されます。キャプチャグループのインデックスがゼロになると予想されたため、これがなぜ機能しないのかを理解するまでには時間がかかりました。 Pythonのほぼすべてのものとは異なり、キャプチャグループがインデックスに登録されていないのはなぜですか?なぜPythonはゼロインデックス化されていないのですか?

string = "BoilerRoom_Boiler_Booster_On" 
re.sub('(Boiler)_(\d)', r'\1-\2', string) 

Out[21]: 
'BoilerRoom_Boiler-1_Booster_On' 
+0

Pythonを明示的に検索していたので、重複した質問は私の検索では出ませんでした。私はそれがすべての言語正規表現のキャプチャグループに適用されることを知ることではありませんでした。 – josh

答えて

2

the docsが言うように、理由:

グループはグループ0は常に存在している0から始まる番号が付けられます。は、彼らがそのようにそれを行うために選んだ理由、それはPythonのreモジュールよりも古いUnixツールはすでにそのようにやっていること、それを推測する私の、限り全体RE

です。

+2

明確にするために - ドキュメントは少し不明です。グループ0は、RE自身のものではなく、REの全体の**マッチ**です。 – ClasG

1

group 0はマッチグループ全体を表すため、ゼロインデックスが付けられています。

関連する問題