正規表現入門
正規表現をPythonから使うには ?
カテゴリー: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() は、対象となる文字列中にパターンを見つけた場合に、対応する
パターンが見つからない場合は
それではこのコードを実行してみましょう。
re_python1.py import re pattern = re.compile(r"a") result = pattern.search("rain") print(result)
実行結果
パターンにマッチしました。
では、パターンを r"b" に変えてみます。
これはマッチしないので None が返されるはずです。
re_python1_2.py import re pattern = re.compile(r"b") result = pattern.search("rain") print(result)
実行結果
適切に None が返ってきました。
Chapter2 正規表現オブジェクトを使わない場合
今度は正規表現オブジェクトを使わない場合について解説します。
reモジュールには、正規表現オブジェクトを使わずに文字列パターンを処理できる関数が用意されているので、それを使います。
文字列のパターンや、対象文字列はコンパイルする場合と同様のものにします。
result = re.search(r"a","rain")
これも実行してみましょう。
re_python2.py import re result = re.search(r"a","rain")
実行結果
この場合でもマッチしました。
以上で2通りの方法を説明しました。
どちらを使えばよいかは、場合によりけりです。
一度に正規表現を多く使用する場合には、正規表現オブジェクトを使用する事が推奨されています。
今回はここまでです。
pythonから正規表現を使う場合の一連の流れを把握できたと思います。
この記事では search() のみ使用しましたが、次回からは他のメゾットも解説します。
関連記事
正規表現をPythonから使う 2
正規表現: | Pythonから使う |
難度 : | 入門〜基礎 |
事前知識: | Pythonの基礎文法 |
学習効果: | パターンを探すメゾットを、使用目的により使い分けることが出来るようになる |
正規表現をPythonから使う 3
正規表現: | Pythonから使う |
難度 : | 入門 |
事前知識: | Pythonの基礎文法 |
学習効果: | 正規表現による、マッチした箇所の置換や分割操作の習得。"チョコレート"を"チョコ"に変える。 |
正規表現とは?
正規表現: | 概要 |
難度 : | 入門 |
事前知識: | 不要 |
学習効果: | 正規表現の概要を知る |
ハロー ! メタキャラクタ
正規表現: | メタキャラクタの概要 |
難度 : | 入門 |
事前知識: | 不要 |
学習効果: | メタキャラクタの概要を掴む |
PR