文字列の先頭位置からパターンとマッチするか調べる(Pattern.match)
Pattern クラスの match メソッドは、対象の文字列の先頭位置でパターンとマッチするかどうかを調べます。 search メソッドは文字列のいずれかの場所でマッチするかどうかを調べましたが、 match メソッドでは先頭位置に限定してマッチするかどうかを調べます。ここでは Python の正規表現で match メソッドを使って文字列の先頭位置からパターンとマッチするか調べる方法について解説します。
(Last modified: )
matchメソッドの書式と使い方
Pattern クラスの match メソッドは、対象の文字列の先頭位置でパターンにマッチするかどうかを調べます。書式は次の通りです。
Pattern.match(string[, pos[, endpos]])
1 番目の引数に対象の文字列を指定します。文字列の先頭に対してパターンがマッチするかどうかをチェックし、マッチした場合はマッチオブジェクト(Match クラスのインスタンス)を返します。マッチしなかった場合は None を返します。
省略可能な 2 番目と 3 番目の引数には、対象の文字列の中でマッチするかどうかをチェックする範囲を指定します。 pos から endpos - 1 までが範囲となります。
match メソッドは search メソッドと似ていますが、 search メソッドが文字列全体を対象にパターンとマッチするかどうか調べるのに対して、 match メソッドは文字列の先頭位置からだけマッチするかどうかを調べます。
その為、対象の文字列が '東京都港区赤坂' でパターンが '港区' だった場合、 search メソッドの場合はマッチしますが、 match メソッドの場合はマッチしません。パターンが '東京都' だった場合はどちらのメソッドもマッチします。
次のサンプルを見てください。 match メソッドを使ってマッチするかどうかを調べ、マッチした場合はマッチした部分文字列を取得します。
import re def checkMatch(msg, pat): pattern = re.compile(pat) result = pattern.match(msg) if result : print(result.group(0)) else : print('Don\'t matched') checkMatch('東京都港区赤坂', r'東京.') >> 東京都 checkMatch('東京都港区赤坂', r'港.') >> Don't matched
対象の文字列がパターンにマッチするかどうかを調べ、マッチした場合はマッチした文字列を取得しました。
※ search メソッドの使い方については「文字列のいずれかの位置でパターンとマッチするか調べる(Pattern.search)」を参照されてください。
※ マッチオブジェクトの詳しい利用方法については「マッチオブジェクトからマッチした文字列の情報を取得する(Match)」を参照されてください。
チェックする範囲を設定する
match メソッドの 2 番目と 3 番目の引数を指定することで、対象の文字列の中のチェックする範囲を設定することができます。例えば対象の文字列が '東京都港区赤坂' だった場合、 match メソッドで 2 番目と 3 番目の引数を省略した場合は '東京都港区赤坂' が対象となります。
match メソッドの 2 番目の引数に 3 、 3番目の引数に 6 を指定した場合は対象の文字列が '港区赤' となります。
次のサンプルを見てください。文字列は同じですが、対象の範囲を変えて match メソッドを実行しています。
import re def checkMatch(msg, pattern, start, end): result = pattern.match(msg, start, end) if result : print(result.group(0)) else : print('Don\'t matched') msg = '東京都港区赤坂' pattern = re.compile(r'港区') checkMatch(msg, pattern, 0, 7) >> Don't matched checkMatch(msg, pattern, 3, 7) >> 港区
match メソッドは文字列の先頭からだけマッチするかどうか調べますが、対象の文字列の範囲を設定した場合は、設定した範囲の先頭文字からマッチするかどうか調べるため 2 回目はマッチしました。
-- --
Python の正規表現で search メソッドを使って文字列のいずれかの位置でパターンとマッチするか調べる方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。