##
4.2.5 MatchObject オブジェクト

`MatchObject` インスタンスは以下のメソッドと属性を サポートします：

`expand`( | template)

  テンプレート文字列 template に、`sub()` メソッドがするような バックスラッシュ置換をして得られる文字列を返します。 "`\n`"のようなエスケープは適当な文字に変換され、数値の後方参照 ("`\1`"、 "`\2`") と名前付きの後方参照 ("`\g<1>`"、 "`\g<name>`") は、対応するグループの 内容で置き換えられます。

`group`( | [group1, ...])

  マッチした1個以上のサブグループを返します。もし引数で一つであれば、 その結果は一つの文字列です；複数の引数があれば、その結果は、 引数ごとに一項目を持つタプルです。引数がなければ、 group1 はデフォールトでゼロです(マッチしたものすべてが 返されます)。 もし groupN 引数がゼロであれば、対応する戻り値は、マッチ する文字列全体です；もしそれが範囲 [1..99] 内であれば、それは、対応する 丸括弧つきグループとマッチする文字列です。もしグループ番号が負であるか、 あるいはパターンで定義されたグループの数より大きければ、 `IndexError` 例外が発生します。もしグループがマッチしなかった パターンの一部に含まれていれば、対応する結果は `None` です。 もしグループが、複数回マッチしたパターンの一部に 含まれていれば、 最後のマッチが返されます。

  もし正規表現が `(?P<name>...)` シンタックスを使うならば、 groupN引数は、それらのグループ名によってグループを識別する文字列であっても 構いません。もし文字列引数がパターンのグループ名として使われていないもので あれば、`IndexError` 例外が発生します。

  適度に複雑な例題：

      m = re.match(r"(?P<int>\d+)\.(\d*)", '3.14')

  このマッチを実行したあとでは、`m.group(1)` は `m.group('int')` と同じく、`'3'` であり、そして`m.group(2)` は `'14'` です。

`groups`( | [default])

  1からどれだけ多くであろうがパターン内にあるグループ数までの、 マッチの、すべてのサブグループを含むタプルを返します。 default 引数は、マッチに加わらなかったグループ用に使われます； それはデフォールトでは `None` です。 (非互換性ノート：オリジナルの Python 1.5 リリースでは、たとえタプルが一要素長で あっても、その代わりに文字列を返すことはありません。(1.5.1 以降の)後のバージョンでは、 そのような場合には、シングルトンタプルが返されます。)

`groupdict`( | [default])

  すべての 名前つきのサブグループを含む、マッチの、 サブグループ名でキー付けされた辞書を返します。 default 引数はマッチに加わらなかったグループ用に 使われます；それはデフォールトでは `None`です。

`start`( | [group])

`end`( | [group])

  groupとマッチしたサブ文字列の先頭と末尾のインデックスを 返します；group は、デフォールトでは (マッチしたサブ文字列 全体を意味する）ゼロです。 group が存在してもマッチに寄与しなかった場合は、 `-1` を返します。マッチオブジェクト m および マッチに寄与しなかったグループ gがあって、 グループ g とマッチしたサブ文字列 ( `m.group(g)`と同じ意味ですが) は、

      m.string[m.start(g):m.end(g)]

  です。 もし groupがヌル文字列とマッチすれば、 `m.start(group)`が `m.end(group)` と等しくなろことに 注意して下さい。例えば、 `m = re.search('b(c?)', 'cba')` の後では、`m.start(0)`は 1 で、 `m.end(0)` は 2 であり、 `m.start(1)` と `m.end(1)` はともに 2 であり、 `m.start(2)` は `IndexError`例外を発生します。

`span`( | [group])

  `MatchObject` m については、 2-タプル `(m.start(group)、 m.end(group))`を 返します。もし group がマッチに寄与しなかったら、これは `(-1, -1)` です。また group はデフォールトでゼロです。

`pos`
  `RegexObject` の `search()` あるいは `match()` メソッドに渡された posの値です。 これは RE エンジンがマッチを探し始める位置の文字列のインデックスです。

`endpos`
  `RegexObject` の `search()` あるいは `match()` メソッドに渡された endposの値です。 これは RE エンジンがそれ以上は進まない位置の文字列のインデックスです。

`lastindex`
  最後にマッチした取り込みグループの整数インデックスです。もしどのグループも 全くマッチしなければ `None` です。

`lastgroup`
  最後にマッチした取り込みグループの名前です。もしグループに名前がないか、 あるいはどのグループも全くマッチしなければ `None` です。

`re`
  その `match()`あるいは `search()` メソッドが、この `MatchObject` インスタンスを生成した正規表現オブジェクトです。

`string`
  `match()` あるいは `search()`に渡された文字列です。