Fresopiya
場所にもお金にも時間にも、何にも縛られない自由な状態になったら一体人間は何をしてどこに向かうのか。 まずはとにかく自由を目指すエンジニアのブログです。

哲学とプログラミングとブログがメインになるかと。
プログラミング

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

どうも、とがみんです。

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

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

正規表現とは

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

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

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

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

任意の1文字を表す表現

正規表現 説明 使用例 マッチする例
. 改行以外の任意の1文字 a.c abc, a1c, a!c ,a c
\d 任意の数字 a\dc a1c
\D 任意の数字以外 a\Dc abc, a!c
\w 任意の英数字 a\wc abc, a1c
\W 任意の英数字以外 a\Wc a!c
\s 空白文字 a\sc a c
\S 任意の空白文字以外 a\Sc abc, a1c, a!c

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

正規表現 説明 使用例 マッチする例
\A 文字列の先頭 \Aabc abcdef
\Z 文字列の末尾 abc\Z defabc
^ 文字列の先頭 ^abc abcdef
$ 文字列の末尾 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|b a,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 — 正規表現操作