1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

Python超入門その25〜複雑なテキスト処理には正規表現を使おう〜

Pocket

はじめに

長い文字列から一部分だけを抜き出したい、ということはありませんか?

プログラミングでは、文字列を処理することが多々あります。
文字列のフォーマットが一定の場合や単純な分割程度であれば、一般的な文字列操作で十分対応可能です。

しかし、ときにはフォーマットされていない文字列の中から、特定の文字列を探し出す必要に迫られることもあるでしょう。そんなときは「正規表現」を活用しましょう。

この記事では、Python初心者の方向けに、Pythonでの正規表現による文字列処理についてお伝えしていきます。
複雑な文字列処理には必須なので、ぜひ習得しておきましょう。

正規表現とはなにか?

正規表現(Regular Expression)とは、文字列のパターンを表現するひとつの方法です。

たとえば、「数字が8つ連続した文字列」や「アルファベットだけの文字列」など、特定の文字列のパターンを表現できます。なにが優れているかというと、特定の文字に縛られることなくパターンを柔軟に表現できることです。

正規表現は、主に「部分文字列の抜き出し」や「特定の文字列の置換」に使われます。
ネット上の情報(HTMLなど)から情報を抜き出すスクレイピングには必須の知識でしょう。

次項で、具体的な正規表現のパターンについてみていきましょう。

基本的な正規表現のパターン

.(ドット)

ドットは、任意の1文字とマッチします。
たとえば、正規表現”a.c”は、文字列”abc・a5c・a@c”などにマッチします。一般的に、単体で使用するよりも次に説明する繰り返しパターンと組み合わせて使われることが多いです。

*(アスタリスク)

アスタリスクは、0文字以上の任意の文字とマッチします。単体では使用できず、前述のドットなどの別のパターン文字や通常の文字(アルファベットなど)と組み合わせて使います。
たとえば、正規表現”head.*”は文字列”head012345・headabc・head@meruru.com”などとマッチします。

0文字以上なので、文字列”head”ともマッチすることに注意しましょう。

+(プラス)

プラスは、1文字以上の任意の文字列とマッチします。こちらも単体では使用できませんので、他のパターンや文字と組み合わせて使います。
たとえば、正規表現”head.+”は文字列”head012345・headabc・head@meruru.com”などとマッチします。
アスタリスクとは違い、文字列”head”とはマッチしないことに注意して下さい。

?(ハテナ)

ハテナは、任意の0文字または1文字とマッチします。
たとえば、正規表現”a?c”は文字列”abc・a@c・ac”などとマッチします。
特定の文字が存在するパターンとしないパターンがある場合によく使います。

()(カッコ)

カッコは、直接文字列にマッチするのではなく、パターンをグループ化します。先のアスタリスクやプラス、ハテナはカッコを使うことで文字列を対象にすることができます。
たとえば、正規表現”(abc)+”は1回以上”abc”を繰り返す文字列(abcabcabcなど)にマッチします。

[](角カッコ)

角カッコは、文字列の集合を表します。たとえば、正規表現”[abc]”は文字列”a・b・c”にマッチします。

また、正規表現”[0-9a-zA-Z]”のようにハイフンで文字を範囲指定することもできます。
こちらも、アスタリスクやプラス、ハテナと組み合わせて使えます。

Pythonで正規表現を使う

それでは、Pythonで正規表現を使う方法をみていきましょう。
次の例をみて下さい。

例:

 

この例では、文字列な中からメールアドレスを抜き出し、アットマークを半角に置換しています。

一回目の正規表現はコンパイルしてから実行しています。二回目の正規表現では、コンパイルせずに実行しています。
正規表現を何度も使いまわす場合には、コンパイルしたほうが高速です。

このように、フォーマットされていない文字列から部分文字列を探し出すのには正規表現が最適です。

まとめ

正規表現は難しいですか?

単純な正規表現ならそうでもないですが、複雑な正規表現はどんなパターンとマッチするかなかなかわかりません。
そのため、サンプルテキストを用意して、しっかりマッチするか確かめたほうがよいでしょう。
思わぬ場所にマッチしてしまうこともよくあります。何度も書いて正規表現に慣れていきましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る