Pythonでの正規表現の利用方法

いろいろなプログラミング言語で正規表現を利用することができますが、 Python から正規表現を利用するにはどのように行うのかについて簡単に解説します。より詳細な利用方法についてはこの後のページをそれぞれ参照されてください。

(Last modified: )

パターンを定義する

正規表現とは、文章の中から少し複雑な条件で目的の文字列を探したり、利用者から入力された値が指定した文字の種類やフォーマットに一致する値になっているかどうかを調べたい場合に便利な機能です。例えば対象の文章に「ABCD」という文字列が含まれているかを調べるのではなく、「A」で始まり「D」で終わる 4 文字の文字列が含まれているかを調べることができます。

この文章の中でどのような文字列を探すのかを定義したものがパターンです。

パターンは文字列やあらかじめ決められている特別な記述方法を使って定義します。例えば「a」で始まり「e」で終わる 5 文字の文字列を表すパターンは「a...e」のように定義できます。正規表現ではドット(.)は任意の 1 文字を表します。

パターンを定義したあと、そのパターンを使って対象となる文字列とマッチするかどうか調べるには Pattern クラスのインスタンスを作成します。作成するには re モジュールに含まれる compile 関数を使って次のように記述します。

import re

pattern = re.compile(r'a...e')

compile 関数の引数にはパターンを表す文字列を指定します。通常の文字列でもいいのですが、正規表現ではバックスラッシュ( Windows では円記号)をよく使用するため、バックスラッシュを特殊な文字ではなく文字として扱うことができる raw 文字列を使用します。結果として Pattern クラスのインスタンスを取得することができます。

文章とパターンがマッチするかどうかを調べる

次に対象となる文字列がパターンとマッチするかどうかを調べます。なおマッチするというのは、対象の文字列の中にパターンと一致する文字列が含まれていた場合のことを正規表現ではマッチすると呼びます。

対象の文字列がパターンとマッチするかどうかを調べるにはいくつか方法がありますが、ここでは Pattern クラスで用意されている search メソッドを使ってみます。

target = 'apple and orange'
pattern = re.compile(r'a...e')

result = pattern.search(target)

対象の文字列がパターンにマッチした場合は Match クラスのオブジェクトを返し、マッチしなかった場合は None が返されます。

それでは対象の文章の中のどの部分にマッチしたのかを取得してみます。

import re

target = 'apple and orange'

pattern = re.compile(r'a.{3}e')
result = pattern.search(target)

if result :
  print(result.group())

>> apple

今回の場合は、対象の文字列の中の「apple」の部分にパターンがマッチしました。

正規表現を利用するにはパターンを具体的にどのように記述するか、そしてパターンが実際にどんなテキストにマッチするのかを知る必要があります。次のページ以降で順番に解説していきます。

-- --

Python から正規表現を利用するにはどのように行うのかについて簡単に解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。