検索や置換を使う時に出てくる正規表現という言葉。わかりにくいくせに、よく出てくるので私のような初心者でも簡単にわかるように正規表現の意味を説明してみました。
正規表現という言葉の意味
まずは、正規表現という普段の日常生活では聞きなれない言葉の意味から説明します。
この言葉のわかりにくさが、初心者の戸惑いを生んでいる要因だと私は思っています。
正規表現という言葉を初めて見たときに私が思ったのは、「正規の表現? じゃあ、非正規の表現もあるの? 検索をするのに、いきなり正規とか非正規とか出てこらても困るな……」というものでした。
それで、ネットで調べてみたのですが、私のバカな頭では理解するのに難しいなと思うページが多かったので、簡単に説明をまとめてみました。
正規表現とは、「Regular Expressinons」という英語を和訳した言葉になります。
これの訳し方が下手くそだったんですよね。
RegularとExpressinons それぞれの単語の訳し方をもう少し選んで欲しかったというのが個人的な感想です。
わかりやすく意訳してみると、「規則表記」になるのかなと思います。
意味は「文字列の規則性を見つけて、その規則性を符号にして表記すること」になります。
私だと、この説明だけではまだわかりませんので、もう少し詳しく説明していきます。
まず、「文字列」という言葉の意味ですが、これは「(単語の意味は無視して)文字の連続した並び」のことです。
そして、「規則性(パターン)」の意味は、ここでは「文字の並び方の特徴」のことです。
さらに、「符号にして表記する」の意味は「あるルールに従って、記述する」ということです。
つまり、正規表現という言葉の意味は、日常で使う言葉で簡単に言い換えれば、「ある文字の並び方の規則(パターン、特徴)をあるルールに従って記述する」という意味になります。
もっと簡単に言うと、正規表現の記述は、意味ではなく並び方を表現しているということです。
この意味は、また別の言い方もできます。正規表現とは、いくつかの文字列を1つの記述で表現することができると。
こんな感じで、なんとなくの意味は掴めたのではと思いますが、さらに具体例を挙げてみます。
ear(耳)
eye(目)という2つの単語を考えてみます。
この2つの単語の(意味の)共通点を問われたときは、どちらの単語も「体の一部、もしくは頭部の一部」などと答えることができます。
では、この2つの単語の文字列の共通点を問われたときは、どう答えられるでしょうか?
どちらの単語も「eという文字から始まる3文字の文字列」と答えることができます。
正規表現で「文字列」として見るときは、文字の並び方だけに注目するので、単語の意味は完全に無視して考えることになります。
さて、この例で出てきた「eという文字から始まる3文字の文字列」というのが「文字の並び方の特徴」になります。
なので、「eという文字から始まる3文字の文字列」という日本語のルールで書かれた「文字の並び方の特徴」を、正規表現で定められたルールに従って書いてみることにすると、「e..」と書き表せることになります。
これを「正規表現を使って書く」や「正規表現で記述する」と言うんですね。
正規表現に一致の意味とは
ここまで来れば、もう意味はわかるかと思います。正規表現に一致とは、正規表現のルールで書かれている文字の並び方と、比較する文字列の並び方が一致するという意味になります。
正規表現のメリット
上の例でわかるとおりに、「文字の並び方の特徴」を日本語のルールで説明して書こうとすると「eという文字から始まる3文字の文字列」のように長くなるパターンでも、すごく簡単に短く表現することができるのが正規表現のメリットになります。
また、他のメリットとして、上でも書きましたが「1つの並び方の特徴を書くこと」で、「同じ並び方をしている文字列を、いくつも見つけ出すことができる」ことが挙げられます。というよりも、これこそが正規表現の存在意味なのではないかというメリットですよね。まさに検索機能そのものです。
そして、なによりも正規表現の記述のルールは、コンピューターが理解しやすいルールであることが最大のメリットになるのではないかと思います。
せっかく検索するための正規表現という記述ルールを作っても、それをもとに人の目で探すとしたら、逆にわかりにくいだけで効率が悪くなるだけですよね。パソコンが機械的に検索してくれないと意味がないわけです。
今のコンピューターの性能では、検索するときに「eという文字から始まる3文字の文字列」という条件を日本語で指定しても、コンピュータは理解してくれません。「e..」という条件を指定するとコンピューターは探してくれるのです。
つまり、正規表現のルールが、コンピュータが理解できるルールでもあるおかげで、テキスト文章で検索や置換をするときに正規表現で条件を細かく指定することができるということです。
正規表現の使い方
正規表現の使う場面は、ファイル名やワード、エクセル、エディタなどのテキスト文章から特定の文や単語を、検索や置換するときに細かい条件を指定したいときに使うというものになるのではないでしょうか。
なので、正規表現を使うときは、いきなり全部を覚える必要はなく、自分がその時に使いたい条件を正規表現ではどう表現するのかを調べながら使っていけばいいということになります。
(日本語に方言があるように、正規表現というルールにもエディタソフトやプログラミング言語によって、微妙に書き方に違いがあるので、調べるときには気を留めておいてください)
この説明でどなたかの理解の助けになれていれば幸いです。