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
RegexObjectsearch() あるいは match() メソッドに渡された posの値です。 これは RE エンジンがマッチを探し始める位置の文字列のインデックスです。

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

lastindex
最後にマッチした取り込みグループの整数インデックスです。もしどのグループも 全くマッチしなければ None です。例えば、(a)b((a)(b))((ab)) といった表現が 'ab' に適用された場合、lastindex == 1 となり、同じ文字列に (a)(b) が適用された場合には lastindex == 2 となるでしょう。

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

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

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

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。