Matchオブジェクト
Matchオブジェクトは、文字列内の正規表現との一致に関する情報を持つオブジェクトです。Matchオブジェクトは、以下のメソッドを適用することで取得できます: fullmatch,
match,
search。
Matchオブジェクトから情報を抽出するには、主要なメソッドを使用します。
Matchオブジェクトに適用される主要なメソッド
| メソッド | 目的 |
|---|---|
group |
グループ0を返します。 |
groups |
キャプチャグループのタプルを返します。 |
groupdict |
名前付きキャプチャグループの辞書を返します。 |
span |
単一のキャプチャグループのタプルの最初と最後のインデックスを返します。 |
start |
単一のキャプチャグループのタプルの最初のインデックスを返します。 |
end |
単一のキャプチャグループのタプルの最後のインデックスを返します。 |
例 . メソッドを使用しないMatchオブジェクト
文字列にmatchメソッドを適用してみましょう:
txt = '123 456 789'
res = re.match('\d+', txt)
print(res)
コード実行結果:
<re.Match object; span=(0, 3), match='123'>
例 . groupメソッド
次に、Matchオブジェクトからgroupメソッドを使ってグループ0を出力してみましょう:
txt = '123 456 789'
res = re.match('\d+', txt)
print(res.group())
コード実行結果:
'123'
例 . groupsメソッド
取得したオブジェクトにgroupsメソッドを適用して、キャプチャグループのタプルを出力してみましょう:
txt = '123 456 789'
res = re.match('(\d)(\d)', txt)
print(res.groups())
コード実行結果:
('1', '2')
例 . groupdictメソッド
名前付きキャプチャグループの辞書を出力するには、groupdictメソッドを適用できます:
res = re.match('(?P<test1>\d)(?P<test2>\d)', txt)
print(res.groupdict())
コード実行結果:
{'test1': '1', 'test2': '2'}
例 . spanメソッド
単一のキャプチャグループの最初と最後のインデックスのタプルを出力してみましょう。これにはspanメソッドを使用します:
res = re.match('\d+', txt)
print(res.span())
コード実行後、2つのインデックスからなるタプルが表示されます。ただし、最後の値は終了インデックスより1大きいことに注意してください:
(0, 3)
例 . startおよびendメソッド
各インデックスを個別に返すには、startとendメソッドを適用できます:
res = re.match('\d+', txt)
print(res.start())
print(res.end())
コード実行結果:
0
3