![]() |
* 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. |
正規表現講座/5 のバックアップ(No.3)
メタスケープ!さて、講座も多分折り返しくらいでしょうか、第5回です。 なお、今回本文中に「\」という文字がいっぱい出てきます。 メタ文字今まで、正規表現特有の記号について覚えてきました。 このような、「正規表現で特別な意味をもつ記号」のことを、「メタ文字」と呼びます。
タブ記号の説明は要りませんね。 ほげ\t+へも と書くと、 改行記号は説明が必要かもしれません。
そして、\rと\nがそれぞれ 0D と 0A のどちら(或いは両方)を表すのかは、
正規表現をつかうツールによって異なります。 エスケープさて、正規表現には色々なメタ文字が用意されていますが、その文字自身を表したいときは どのようにすれば良いでしょうか。 例えば、「()で囲まれた数字を探す」とき、どのような正規表現を書きますか。 ([0-9]+) と書いてしまうと、「()」が第4回で学んだ「まとめて1つ」の意味になってしまいます。 そのような時に必要なのが、「エスケープ」です。 ほとんどの正規表現ツールでは、メタ文字の前に「\」をつけることによって、 「エスケープ」することができます。 例えば、さっきの例では、 \([0-9]+\) と書けば望むものが検索できるわけです。 ちなみにこれが、複雑な正規表現が「\」まみれになる理由だったりします。 改行の扱い正規表現を扱うツールには、「シングルラインモード」のON/OFFができる 場合があります。 これ、何が変わるかというと、主に「.」の扱いが変わるのですね。
エディタ等ではほとんどの場合、シングルラインモードはOFFだと思いますが、 改行を超えて文字列を検索したい場合など、シングルラインモードをONにすると 便利な場合もあります。 たとえば、HTMLの中の <a href="~">○○</a> という部分を探したい場合。 <a href="mononoke.html"> もののけ </a> は、「もののけ」の前後に、改行文字=「.」に当てはまらない文字、が入っているため、
マッチしません。そのような時に「シングルラインモードON」が使えます。 ちょっと脱線0Dのことをキャリッジリターン(CR)、0Aのことをラインフィード(LF) と呼んだりします。 これ、いにしえのタイプライタ時代の「改行」の動作、
から来ているらしいですが、キーボード配列のQWERTYなど、 コンピュータって、変なところで昔の慣習を引きずっているものです。 ご指摘などはこちらへ |