スポンサードリンク
どうも、とがみんです。
ある文章の中から、「URLのみを抜き出したい」、「無駄な文字列を省きたい」といったテキストの処理を行う際に、正規表現の知識があれば、一気に効率化することができます。
この記事では、正規表現とは何か、またPythonに用意されている正規表現の操作を提供するモジュール「re」について、その使い方を紹介していきます。
Contents [hide]
正規表現とは
正規表現とは、文字列の集合を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 |
Python正規化モジュール「re」について
正規化モジュール「re」の主なメソッドを紹介します。
メソッド | 概要 |
---|---|
match(パターン,文章) | 文章の先頭がパターンと一致するかどうかの判定。 |
search(パターン,文章) | パターンが文章のどこにマッチするのかを調べる。 |
findall(パターン,文章) | 文章からパターンにマッチする文字列を全て探し、リストに格納する。 |
sub(パターン, 文字列, 文章) | 文章からパターンにマッチするものを探し、文字列に置き換える。 |
パターンには抽出する正規表現、文章には調査する文章を入力します。
次に、それぞれのメソッドを使用した簡単な例を紹介していきます。
match
textListそれぞれの文の先頭が、httpとマッチするかどうかを判定しています。
「https://fresopiya.com/」はマッチしますが、「とがみんブログ」はマッチしないので、後者の出力はNoneです。
search
textのどこに、「自由」という文字が含まれているのかを調べています。マッチする箇所が複数あった場合、最初の箇所しか返しません。
findall
textの中から、数字を探しだし、見つけた数字をリストに格納します。
sub
textの中の数字を省きます。
まとめ
正規表現とは何か、またPythonに用意されている正規表現の操作を提供するモジュール「re」について紹介しました。
参考文献
スポンサードリンク
スポンサードリンク