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