正規表現

正規表現をPythonで使う

reモジュール

 今回からpythonで正規表現を扱う方法を解説します。

初めに正規表現中よく用いられる、バックスラッシュ文字である \ (Windowsでは円マークです)について説明します。

その後実際にPythonで正規表現を使って、対象とする文字列の中にパターンがあるかどうかを調べます。(Pythonのバージョンは 3.7)

単純な例で解説するので、Pythonでの正規表現を扱う場合の概要が分かります。


この記事の難度は、入門  Aクラスです。

(A: やさしい   →   E: 難しい)

pythonの事前知識として入門程度を把握していれば難なく理解できます。

難度       :
事前知識: Pythonの基礎文法
学習効果: pythonから正規表現を使う一連の流れを掴む

Contens  |   目次

Chapter1 正規表現オブジェクトを使う場合
Chapter2 正規表現オブジェクトを使わない場合

Chapter1   正規表現オブジェクトを使う場合

エスケープシーケンスを無効にする

 正規表現では、バックスラッシュ文字 ( \ ) を頻繁に使います。( \ はWindowsでは円マークです)。

これは正規表現の中で特殊な形式を表示したり、特殊文字の意味を打ち消す為です。

それ故、バックスラッシュの特殊解釈を無くす為に、raw 文字列記法(文字列の前に r 又は R を付ける)を使います。

例えば、"\n"は改行を表す特殊文字(エスケープシーケンス)ですが、raw文字列記法により r"\n"は、改行でなく\とnの2文字の文字列とされます。

(エスケープ文字についての詳細は、【\ エスケープ文字の働き】 を参考にして下さい。)

reモジュールについて

 Pythonで正規表現を使用する為のモジュールは reモジュールです。

まずはこれをインポートします。

       
        import  re
                            

 reモジュールにより正規表現を用いる場合、正規表現オブジェクトを使用するかどうかにより、Pythonでは2つの方法を用意しています。

先に正規表現オブジェクトを使う場合から説明します。

これは、文字列パターンを正規表現オブジェクトにコンパイルしてから、そのオブジェクトのメゾットにより処理するというものです。

例として、アルファベットの a にマッチする正規表現を考えてみましょう。

アルファベットの a にマッチするパターン文字列は単純に r"a" となります。

これをコンパイルする為に、先ほどインポートしたreモジュールの compile() を使います。

       
        pattern = re.compile(r"a")
                            

 次に、この正規表現オブジェクトのメゾットである search() により正規表現がマッチする箇所を探します。

検索対象となる文字列は rain にしましょう。

       
        pattern.search("rain")
                            

search() は、対象となる文字列中にパターンを見つけた場合に、対応するマッチオブジェクトを返します。

パターンが見つからない場合は None が返却されます。


 それではこのコードを実行してみましょう。

    re_python1.py

        import  re

        pattern = re.compile(r"a")
        result = pattern.search("rain")
        print(result)
                            


実行結果 正規表現のPythonでパターンマッチ1

パターンにマッチしました。

 では、パターンを r"b" に変えてみます。

これはマッチしないので None が返されるはずです。

    re_python1_2.py

        import  re

        pattern = re.compile(r"b")
        result = pattern.search("rain")
        print(result)
                            


実行結果 正規表現のPythonでパターンマッチ1_2

適切に None が返ってきました。

Chapter2   正規表現オブジェクトを使わない場合

 今度は正規表現オブジェクトを使わない場合について解説します。

reモジュールには、正規表現オブジェクトを使わずに文字列パターンを処理できる関数が用意されているので、それを使います。

文字列のパターンや、対象文字列はコンパイルする場合と同様のものにします。

       
        result = re.search(r"a","rain")
                            


 これも実行してみましょう。

    re_python2.py

    import  re

    result = re.search(r"a","rain")
    print(result)
                            


実行結果 正規表現のPythonでパターンマッチ2

この場合でもマッチしました。


 以上で2通りの方法を説明しました。

どちらを使えばよいかは、場合によりけりです。

一度に正規表現を多く使用する場合には、正規表現オブジェクトを使用する事が推奨されています。



 今回はここまでです。

pythonから正規表現を使う場合の一連の流れを把握できたと思います。

この記事では search() のみ使用しましたが、次回からは他のメゾットも解説します。

関連記事

Pythonで正規表現を使う2

正規表現をPythonから使う 2

正規表現: Pythonから使う
難度       : 入門〜基礎
事前知識: Pythonの基礎文法
学習効果: パターンを探すメゾットを、使用目的により使い分けることが出来るようになる
Pythonで正規表現を使う3

正規表現をPythonから使う 3

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: 正規表現による、マッチした箇所の置換や分割操作の習得。"チョコレート"を"チョコ"に変える。
正規表現の概要_key-visual

正規表現とは?

正規表現: 概要
難度       : 入門
事前知識: 不要
学習効果: 正規表現の概要を知る
メタキャラクタに馴染む_key-visual

ハロー ! メタキャラクタ

正規表現: メタキャラクタの概要
難度       : 入門
事前知識: 不要
学習効果: メタキャラクタの概要を掴む
正規表現の概要

PR