Python: 正規表現で検索する(先頭のみ) re.match()
正規表現で検索(先頭のみ) match()
Pythonで正規表現を使って検索する場合、reモジュールの match()関数を使うと、 先頭の文字列がパターンにマッチするかどうかがわかります。
search()関数は任意の位置のマッチングを調べますが、 match()関数は先頭のみのマッチングを調べます。
書式
match(パターン, 検索対象文字列 [, flags=0])
マッチする場合はマッチ情報が格納されたmatchオブジェクトが戻り、 マッチしない場合は「None」が戻ります。
マッチする場合
具体的にmatch()関数を使って先頭検索を行います。
次のコードは変数「p」がパターン文字列、変数「s」が検索対象文字列です。
先頭が「c.t」のパターンに一致するかどうかを検索します。
(「imoprt re」を忘れずに記述してください)
import re p = "c.t" s = "cut cup cute" m = re.match(p, s) print(m)
実行結果
<re.Match object; span=(0, 3), match='cut'>
マッチした場合はこのように、 match オブジェクトの内容が表示されます。
マッチしない場合
次はマッチしない場合を見てみます。
先頭が「b.t」のパターンに一致するかどうかを検索します。
import re p = "b.t" s = "cut cup cute" m = re.match(p, s) print(m)
実行結果
None
マッチしない場合は「None」と表示されます。
マッチする・しないで処理を分岐させる
if文を使って、 マッチする・しないで処理を分岐させる場合は次のように記述できます。
import re p = "b.t" s = "cut cup cute" m = re.match(p, s) if m: print(m) else: print(m)
マッチした文字列を取得する
matchオブジェクトからマッチした文字列だけを取得したい場合は、 matchオブジェクトの group()メソッドを使います。
import re p = "c.t" s = "cut cup cute" m = re.match(p, s) if m: print(m.group()) else: print(m)
「matchオブジェクト.group()」でマッチした文字列が取得できます。
実行結果
cut