プログラミング

【Python】正規表現と正規化モジュール「re」について。

どうも、とがみんです。

ある文章の中から、「URLのみを抜き出したい」、「無駄な文字列を省きたい」といったテキストの処理を行う際に、正規表現の知識があれば、一気に効率化することができます。

この記事では、正規表現とは何か、またPythonに用意されている正規表現の操作を提供するモジュール「re」について、その使い方を紹介していきます。

正規表現とは

正規表現とは、文字列の集合を1つの文字列で表現する方法です。

例えば、\dは「0〜9」のいずれか一文字を表す正規表現です。

以下に正規表現の例を紹介していきます。

任意の1文字を表す表現

正規表現説明使用例マッチする例
.改行以外の任意の1文字a.cabc, a1c, a!c ,a c
\d任意の数字a\dca1c
\D任意の数字以外a\Dcabc, a!c
\w任意の英数字a\wcabc, a1c
\W任意の英数字以外a\Wca!c
\s空白文字a\sca c
\S任意の空白文字以外a\Scabc, a1c, a!c

文字列の先頭or末尾を表す表現

正規表現説明使用例マッチする例
\A文字列の先頭\Aabcabcdef
\Z文字列の末尾abc\Zdefabc
^文字列の先頭^abcabcdef
$文字列の末尾abc$defabc

繰り返しを表す表現

正規表現説明使用例マッチする例
*0回以上の繰り返しab*a, ab, abb, abbb
+1回以上の繰り返しab+ab, abb, abbb
?0回または1回の繰り返しab?a, ab
{m}m回の繰り返しab{2}abb
{m,n}m〜n回の繰り返しab{2,4}abb, abbb, abbbb

集合

正規表現説明使用例マッチする例
[]集合[a-c]a,b,c
|和集合a|ba,b
()グループ化(ab)ab

>re — 正規表現操作

Python正規化モジュール「re」について

正規化モジュール「re」の主なメソッドを紹介します。

メソッド概要
match(パターン,文章)文章の先頭がパターンと一致するかどうかの判定。
search(パターン,文章)パターンが文章のどこにマッチするのかを調べる。
findall(パターン,文章)文章からパターンにマッチする文字列を全て探し、リストに格納する。
sub(パターン, 文字列, 文章)文章からパターンにマッチするものを探し、文字列に置き換える。

パターンには抽出する正規表現、文章には調査する文章を入力します。

次に、それぞれのメソッドを使用した簡単な例を紹介していきます。

match

textListそれぞれの文の先頭が、httpとマッチするかどうかを判定しています。

「https://fresopiya.com/」はマッチしますが、「とがみんブログ」はマッチしないので、後者の出力はNoneです。

search

textのどこに、「自由」という文字が含まれているのかを調べています。マッチする箇所が複数あった場合、最初の箇所しか返しません。

findall

textの中から、数字を探しだし、見つけた数字をリストに格納します。

sub

textの中の数字を省きます。

>正規表現HOWTO

まとめ

正規表現とは何か、またPythonに用意されている正規表現の操作を提供するモジュール「re」について紹介しました。

参考文献

>Pythonでの正規表現の使い方

>正規表現HOWTO

>re — 正規表現操作