2023 © RegexOne
メール | Twitter
複雑なデータを取り扱う場合、複数の階層の情報を抽出する必要が生じることがあり、その結果、ネストされたグループが必要になります。一般的に、キャプチャされたグループの結果は、定義された順序(左括弧の順序)で出力されます。
前のレッスンの例として、リストにあるすべての画像ファイルのファイル名を取得することを考えましょう。これらの画像ファイルそれぞれに、ファイル名に連続した画像番号が含まれている場合、`^(IMG(\d+))\.png$`のような式を書くことで(数字をキャプチャするためにネストされた括弧を使用)、同じパターンを使用してファイル名と画像番号の両方を抽出できます。
ネストされたグループは、パターン内で左から右に読み取られ、最初のキャプチャグループは最初の括弧グループの内容などとなります。
以下の文字列に対して、日付全体と日付の年の両方と*一致し、キャプチャする*式を書いてください。
| 課題 | テキスト | キャプチャグループ | |
| キャプチャ | Jan 1987 | Jan 1987 1987 | ![]() |
| キャプチャ | May 1969 | May 1969 1969 | ![]() |
| キャプチャ | Aug 2011 | Aug 2011 2011 | ![]() |
| 解答 | この式では、年と日付全体の2つのデータ部分をキャプチャする必要があります。そのため、(\w+ (\d+)) の式のように、ネストされたキャプチャグループを使用する必要があります。 代わりに、スペースの代わりに `\s+` を使用して、月と年の間に任意の数の空白をキャッチすることもできます。 |