Fresopiya
場所にもお金にも時間にも、何にも縛られない自由な状態になったら一体人間は何をしてどこに向かうのか。

まずはとにかく自由を目指すエンジニアのブログです。
「哲学」と「プログラミング」と「政治経済」、「ブログ」がメインになるかと。
プログラミング

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

どうも、とがみんです。

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

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

正規表現とは

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

正規表現とは、文字列の集合を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 — 正規表現操作