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