文字列の正規表現マッチング re.match re.search

完全マッチするか

import re
m = re.match(r"\d-\d\d", "12-34")   #raw文字列で指定することで、エスケープ不要
print(m)        #None 完全マッチしない

m = re.match(r"\d\d-\d\d", "12-34") #Match Objectを返す
print(m.group(0))       # "12-34"

m = re.match(r"(\d\d)-(\d\d)", "12-34")  #group取得
print(m.group(0))      # "12-34"
print(m.group(1))      # "12"
print(m.group(2))      # "34"

部分一致

matchとは違い文字列の一部分にマッチしても取得できる。

m = re.search(r"\d-\d\d", "12-34") 
print(m.group(0))       #2-34

m = re.search(r"\d\d", "12-34") 
print(m.group(0))       #12
m2 = m.re.search("12-34", m.end())) #最初のsearch時に作成された正規表現オブジェクトを再利用
print(m.group(0))       #34

正規表現オブジェクト

re.match()や、re.search()は正規表現オブジェクトの生成を省略した簡易な利用法。使い捨てのマッチングに便利だが、繰り返しマッチングを行う場合は正規表現オブジェクトを生成してからマッチングを行うほうが効率が良い。

ptn = re.compile(r"\d\d")   #正規表現オブジェクトをコンパイル
print(ptn.search("12345678").group(0))   #作成した正規表現オブジェクトを利用
print(ptn.search("12345678", 2).group(0))   #作成した正規表現オブジェクトを利用
関連記事:

文字列の正規表現マッチング re.match re.search」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)