正規表現

正規表現の概要

暗号みたいな言葉を操る♪

 さて皆さん、正規表現とは一体何でしょうか?

普段聞き慣れない言葉ですので、即答できる人はごく僅かだと思います。

これからこの正規表現について説明していきますが、まずは直感的なイメージを掴んで概要を理解してしまいましょう。

  この正規表現について分かり易いイメージで例えるなら 暗号めいた言葉 とでも言えるでしょうか。

さすがにこれだと漠然としているので、もう少し鯱張った定義をe-Wordsから引用してみます。

"正規表現とは、ある特定のパターンを持つ文字列を指定する表記法の一つ。文字列の検索や置換、抽出などを行う際の対象 の指定などのために用いられる。"  (IT用語辞典 e-Wordsより引用)


 文字列の検索、置換とあるので文字列操作に役立ちそうな事が窺えます。

そして、ある特定のパターンを持つ文字列とあります。

正規表現がそのターゲットとするのは、一定の規則性を持った文字列です。

つまり、文字列にパターンがある場合に正規表現は活躍するのです。

パターンを見抜いて...

 文字列にパターンがあるとはどういう事でしょうか?

これに際しては以下のような文字列を考えてみましょう。

       
        abc

        def

        1abc

        2def
                        


 最初の abc と、次の def は、アルファベットの繰り返しだけで文字列が構成されています。

3番目の 1abc と4番目の 2def は、先頭に数字があり、次にアルファベットの繰り返しという文字列です。

この4つの文字列の中で、3番目と4番目のみを操作対象にしたい場合に、正規表現を用いて3番目と4番目の文字列パターンを指定します。

その文字列パターンこそが、「先頭に数字があり次にアルファベットの繰り返し」です。

これを正規表現で記述すると  ^[0-9][A-Za-z]+  あるいは  ^¥d[A-Za-z]+  のようになるのです。(各種記号の意味は後程説明します。)

 規則性を内包した文字列なんてそんなにあるのか? と思われたかもしれません。

しかし、周囲を見渡すと郵便番号や電話番号、或いは日付形式など、一定の規則性を保持した文字列は随所に見受けられます。

文字列は日常に溶け込んでいるので、それに気付く事ができれば、正規表現を奔走させる機会に恵まれることでしょう。(注:上記で用いた「文字」という言葉は、数字などの表意文字までをも含めた、広義の意味での文字をその前提としました。)

正規表現のメリット

 こうして表現された正規表現は、プログラムのコードの中で用いる事ができます。

実用例の一つとして、Webスクレイピングで用いられることがあります。

Webスクレイピングとは、webページからデータを入手する技術です。

その方法として、ブラウザからページにアクセスするGUI的なものでなく、プログラミングによりhtmlファイルなどから欲しいデータを手に入れます。

目的のデータだけを対象とするには、羅列されているHTML文字列の中で、それを指定しなければなりません。

ここで正規表現を登場させれば、欲しいデータのパターンが指定できるので、必要な箇所のみを入手でる次第になるというわけです。

あなたが使う魔法は何色?

 このように正規表現を使うメリットとして実利的な側面がありますが、この他にもプログラマーの自己表現手段の確立に資する事も見逃せません。

と言うのも、正規表現を用いるとあたかも暗号操作をしているような所感を得られます。

それは次第に、秘密めいた高揚を感じていく事に繋がるでしょう。

あの独特な記号列には魔術的な香りが立ち籠めています。

意のままに綾取れば、達成感やある種の特権意識を持つに至ること請け合いです。

 しかし一方で、正規表現は難しいという声も多々聞かれます。

正規表現が難しく感じられる一因は、一遍に記号列全体を見て解釈しようとするからです。

細かく分解すれば、単体では単純な意味に還元できます。

故に苦手意識を克服するには、文字の1つ1つの意味と挙動を正確に把握する事が重要になります。

把握できれば、それを全体へと結びつけての理解が可能になるでしょう。


 ということで、正規表現の大凡の概要が掴めたところで、早速次回からはプログラミング言語pythonにより正規表現を使う方法を解説します。

関連記事

Pythonで正規表現を使う1

正規表現をPythonから使うには ?

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: pythonから正規表現を使う一連の流れを掴む
Pythonで正規表現を使う2

正規表現をPythonから使う 2

正規表現: Pythonから使う
難度       : 入門〜基礎
事前知識: Pythonの基礎文法
学習効果: パターンを探すメゾットを、使用目的により使い分けることが出来るようになる
Pythonで正規表現を使う3

正規表現をPythonから使う 3

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: 正規表現による、マッチした箇所の置換や分割操作の習得。"チョコレート"を"チョコ"に変える。
メタキャラクタに馴染む_key-visual

ハロー ! メタキャラクタ

正規表現: メタキャラクタの概要
難度       : 入門
事前知識: 不要
学習効果: メタキャラクタの概要を掴む
実践1

クレジットカード番号

正規表現: 定形の数字形式
難度       : 入門
事前知識: Pythonと正規表現の基礎。文字クラス等。
学習効果: クレジットカードのパターンを掴み、正規表現で取得する事が出来るようになる。
正規表現の概要

PR