no-image

pythonの正規表現のオブジェクトの流れ【re.compile()を使う】

Pythonの正規表現でre.compile()を使用する方法

re.compile()を使って正規表現オブジェクトを取得する流れは下記のとおりです。;

  1. import reでインポートする。
  2. re.compile()で正規表現オブジェクトを生成する。 例:re.compile(r’\d+’)
  3. search()メソッドに渡した文字列から検索する 例:zisoku.search(‘時速100km’)
  4. 正規表現オブジェクトでsearch()を使うとmatchオブジェクトを返す
  5. matchオブジェクトgroup()メソッドを呼び出すと、実際にマッチした文字列を取得

Pythonの正規表現を使って文字を検索する2つの方法

Pythonの正規表現を使って文字を検索する方法は下記のとおり2つあります。

  1. 上の例のように最初に正規表現オブジェクトを作ってからsearch()で検索をかける
  2. search(hoge, foo)に検索に使う文字列と、検索したい文字列を渡す
    # hoge =’\d+’ foo=’時速100km’

今回紹介するのはre.compile()を使って最初に正規表現オブジェクトを作成する方法です。

前回の記事「pythonの正規表現のオブジェクトの流れ」では2の方法を使っています。

re.compile()を使ったPythonコード

import re
zisoku = re.compile(r'\d+')
mo = zisoku.search('時速100km')
print(mo)#<_sre.SRE_Match object; span=(2, 5), match='100'>
print(type(mo))#<class '_sre.SRE_Match'>
print(mo.group())#100

見ていただいたらわかると思いますが print(mo)のmoはmatchオブジェクトです。

matchオブジェクトにgroup()を使うことにより、文字列が返ってきます。matchオブジェクトと言っていますがmatch()メソッドとはなんの関係もないので混同しないようにしてください。最後になりますが、re.compile(r”)のr’’の部分はraw文字列と言います。

raw文字列は筆者の知識の範囲をこえるので説明はしませんが、上のコードですとr”はなくてもre.compile(‘ ‘)でも一応見つけることはできます。