* U K I Y A H O N P O * Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, che la diritta via era smarrita. |
間違いだらけの正規表現講座 level 2
入るものを特定するさて、第2回では、「入るものを特定する」伏字のやり方について解説します。 前回は、正規表現「.」は、なんでもいいから1文字とマッチする、とお話しました。 しかし「なんでもいい」では困る場合もあります。 例えば、テキストファイルから 2006/07/07 のような日付を探す場合。 そこで、今回は「数字だけが入る伏字」や「特定の文字だけが入る伏字」についてお話します。 この中のどれか一つさて、今回の最初の正規表現記号です。 [abcde] この記号。これは、「[]の中のどれか一つにマッチする」正規表現です。 さて、これで先ほどの年月日を探す例を書き直してみましょう。 [0123456789][0123456789][0123456789][0123456789]/ [0123456789][0123456789]/[0123456789][0123456789] 単純ですね。 「0123456789のどれかが入る伏字」を使って、????/??/?? の ? に入るものを、 数字に限定しているわけです。 こっからここまで全部くれ!しかし、「数字」を表すために毎回 [0123456789] と書いていたのでは疲れてしまいます。 [0-9] これは、「0から9までのどれかにマッチする」正規表現です。 [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] となります。ずっと短くなりました。 この記法は、勿論数字以外にも使えます。例えば; [a-z] これはアルファベット小文字にマッチします。 [A-Z] これはアルファベット大文字にマッチします。 組み合わせて使うこともできます。 [0-9a-zA-Z] これはアルファベット大文字、小文字、数字にマッチします。 これ以外全部くれ!さて、ついでに、次の記法も覚えておきましょう。 [^abc] これは、「aとbとc以外の任意の1文字」にマッチする表現です。 例えば、 [^A-Z] これは、「大文字アルファベット以外の任意の1文字」にマッチする表現です。 今はそれほど使い道が思いつかないかもしれませんが、そのうち使いたい場面が出てくるので、 一緒に覚えておいてください。 練習さて、練習の時間です。 正規表現テスターを立ち上げてください。 そうしたら、適当なサイトからテキストを貼り付けてみてください。 その中から、12:34 という形式の時刻表記を探してみます。 [0-9][0-9]:[0-9][0-9] これを正規表現の欄に入れて、「テスト!」ボタンを押してみましょう。 ちょっと脱線今回お話したような正規表現は、「文字クラス」と呼ばれています。 「クラス」というのはコンピュータ用語で沢山出てきますが、 日本人だと、一番に来るイメージは、学校のクラス、ではないでしょうか。 次に来るのは、「Aクラス」「Bクラス」といった、「等級」という意味かな。 どうしてもそんなイメージがあってどうも馴染みにくい気がします。 コンピュータ用語の「クラス」はもうちょっと広い意味で使われており、 つまり、「文字クラス」であれば、「文字のひとまとまり」。 ご指摘などはこちらへ |