Pythonサンプルコード集

Python正規表現の特殊記号と記述方法まとめ

本記事ではPythonにおける正規表現の特殊記号と記述方法について説明します。

正規表現はソースコードの記述量を減らし可読性を上げることができるため、Pythonに限らずプログラミングにおいて重要な要素です。

よりわかりやすいプログラムを目指すために理解しておきましょう。

本記事の内容は以下の通り。

・Pythonの正規表現で用いる特殊記号
・Python正規表現(reライブラリ)のメソッド

正規表現チェッカーを作成してみました

正規表現チェッカー for Python

Pythonの正規表現で用いる特殊記号

特殊記号
正規表現で使う主な特殊記号は以下の通りです。

開始^
終了$
改行以外の一字.
英字・小文字[a-z]
英字・小文字[A-Z]
数字[0-9]
英数字[a-zA-Z0-9]
スペースs
0回以上の繰り返し*
1回以上の繰り返し+
n回の繰り返し{n}
n回以上の繰り返し{n,}
n回以上m回以下の繰り返し{n,m}
省略可?
OR|
スペース以外の一字S

他の記号もありますが、とりあえずはこれだけ覚えておけばだいたいの表現はできます。

正規表現と繰り返しの表現

正規表現で繰り返しを表現する方法としては主に以下の3つの方法があります。

・正規表現で0回以上の繰り返しは「*」(アスタリスク)を使う
・正規表現で1回以上の繰り返しは「+」を使う
・正規表現におけるn回の繰り返しは「{n}」を使う

正規表現で繰り返しを表現する方法

正規表現で部分一致や完全一致をチェックする表現

前方一致は「^」や「A」、後方一致は「$」や「Z」でチェックします。

完全一致したい場合はそれぞれの記号を併せて「^あいうえお$」のように記述します。
部分一致の場合は「^.*あいうえお.*$」のように前方と後方に「改行以外の1文字以上」を意味する「.*」を記述します。

正規表現で部分一致・完全一致の記述をする方法

Python正規表現の記号エスケープ処理

前述の表にあるドットやハイフンはそのままだと特殊記号として扱われてしまうため、バックスラッシュによるエスケープが必要です。

特殊文字のエスケープを行う場合はバックスラッシュ()を記号の直前に挿入します。

()や{}はそれぞれのエスケープが必要です。

Python正規表現でピリオド(ドット)を使う方法

Pythonの正規表現でピリオド(ドット)を指定する場合はバックスラッシュでエスケープして「.」のように指定します。
エスケープが必要な理由は正規表現におけるドットが「改行以外の1字」を意味するためです。

関連記事>>正規表現でピリオド(ドット)を指定するには?

Python正規表現でハイフンを使う方法

Pythonの正規表現でハイフンを指定する場合はバックスラッシュでエスケープして「-」のように指定します。

エスケープが必要な理由は正規表現におけるハイフンが数字を示す[0-9]や英字を示す[a-z]などの補助記号として使われているためです。([]外でハイフンを使う場合は不要)

正規表現でハイフンを指定するには?

Python正規表現でスペースを使う方法

スペースはそのまま使用することも可能ですが、全角・半角は別の文字として区別されます。
全角と半角の両方をマッチさせたい場合は「s」を使うことでマッチ可能です。

正規表現でスペースを記述する方法+Pythonサンプルコード

「S」を指定するとスペース以外の1字とマッチすることができます。

Python正規表現でタブを使う方法

タブもそのままコードに記述できますが、スペースと区別がつきにくくソースコードの可読性が下がるので特殊記号を使用しましょう。

特殊記号は「t」を指定します。

正規表現でタブを指定するには?

Python正規表現で英数字を使う方法

正規表現で英数字を指定する場合は「[0-9]」のように「[]」の中に指定します。
ハイフンを使うことで範囲指定することも可能です。

Python正規表現(reライブラリ)のメソッド

メソッド
Pythonで正規表現を使用する場合はライブラリ「re」を使う必要があります。

Pythonに標準でインストールされているため、importするだけで使用することができます。
下記の例は「文字列が『こんにちは』を含むか」を定義したものです。マッチングを行なった場合「こんにちは」を含む全ての文字列に対して「TRUE」を返します。

◆記述内容
正規表現を使えば

よく使うメソッドである「re.compile()」、「re.search()」、「re.match()」の3つについて紹介します。

re.compile()

正規表現を比較できる形に変換するメソッドです。

◆使用例

re.search()

正規表現のマッチング処理を行うメソッドです。
文字列の全文を検索してマッチする文字列があるかチェックします。

◆使用例

re.match()

正規表現のマッチング処理を行うメソッドです。
文字列の先頭がパターンとマッチするかチェックします。

◆使用例

他の正規表現やreライブラリのメソッドについては
公式ドキュメントをお読みください。

こちらで簡単な正規表現のチェックができるので興味があったら覗いてみてください。
>>正規表現チェッカー for Python

まとめ

コンピュータはちょっとした言葉の違いであっても違う単語として認識してしまいます。
正規表現を用いることで「こんにちは」、「こんにちは!」、「こんにちはー」などの表記の揺れを同じ言葉として認識させることが可能です。

表記の違いを同じ言葉として認識できると記述するコードが短くなるため、可読性も上がり修正にかかる時間も減ります。
パターンの追加もほぼ不要となります。

正規表現を活用することでコード作成の効率化や可読性の向上にもなるので是非習得するようにしましょう。

PtyhonまとめTOP>>Pythonプログラミングの始め方まとめ

Pythonの正規表現については「公式ドキュメント」も併せてお読みだくさい。

◆関連記事

おすすめ記事>>PythonにおすすめのノートPC4選+パソコンの選び方

こちらの記事も読まれています

  • この記事を書いた人
miyabikno

みやびの

住んでいるところ:神奈川県。 プログラミング歴は13年ほど。 ※プログラミングに関する無料相談・質問への回答は行っていません。

-Pythonサンプルコード集
-

Copyright© みやびのどっとぴーわい , 2020 All Rights Reserved Powered by AFFINGER5.