レッスン12:ネストされたグループ

複雑なデータを取り扱う場合、複数の階層の情報を抽出する必要が生じることがあり、その結果、ネストされたグループが必要になります。一般的に、キャプチャされたグループの結果は、定義された順序(左括弧の順序)で出力されます。

前のレッスンの例として、リストにあるすべての画像ファイルのファイル名を取得することを考えましょう。これらの画像ファイルそれぞれに、ファイル名に連続した画像番号が含まれている場合、`^(IMG(\d+))\.png$`のような式を書くことで(数字をキャプチャするためにネストされた括弧を使用)、同じパターンを使用してファイル名と画像番号の両方を抽出できます。

ネストされたグループは、パターン内で左から右に読み取られ、最初のキャプチャグループは最初の括弧グループの内容などとなります。

以下の文字列に対して、日付全体と日付の年の両方と*一致し、キャプチャする*式を書いてください。

演習12:ネストされたグループのマッチング
課題 テキスト キャプチャグループ  
キャプチャ Jan 1987 Jan 1987 1987 To be completed
キャプチャ May 1969 May 1969 1969 To be completed
キャプチャ Aug 2011 Aug 2011 2011 To be completed
解答

この式では、年と日付全体の2つのデータ部分をキャプチャする必要があります。そのため、(\w+ (\d+)) の式のように、ネストされたキャプチャグループを使用する必要があります。

代わりに、スペースの代わりに `\s+` を使用して、月と年の間に任意の数の空白をキャッチすることもできます。

次の問題に進みたい場合は上記の課題を解いてください。または解答をご覧ください。