⊗pyPmRENPB 71 of 129 menu

Pythonの正規表現における非キャプチャ括弧

括弧( )には2つの機能があります - 文字のグループ化とキャプチャ(記憶)機能です。 では、グループ化はしたいがキャプチャはしたくない場合、 どうすればよいでしょうか?この問題を解決するために、 特別な非キャプチャ括弧 (?: )が導入されました - これらはグループ化しますが、キャプチャしません。

次の例では、最初の括弧はグループ化のため、 2番目の括弧はキャプチャのために必要です。 しかし、どちらの括弧もデータをキャプチャしてしまいます:

txt = 'abab123' res = re.search('(ab)+([1-9]+)', txt)

結果、キャプチャグループには以下の内容が格納されます:

print(res[0]) # 'abab123' を出力 print(res[1]) # 'ab' を出力 print(res[2]) # '123' を出力

最初の括弧ペアがグループ化のみを行い、 キャプチャしないように変更してみましょう:

txt = 'abab123' res = re.search('(?:ab)+([1-9]+)', txt)

結果、最初のキャプチャグループには数字が格納されます:

print(res[1]) # '123' を出力
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否