* 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 8
一気に置き換えろ!さて、とうとう第8回まできました。 これを覚えると、テキストの加工が一気に楽になります。 単純な置換さて、置換と言っても、単純な置換だけなら、何も覚えることはありません。 例えば、文章に含まれる、 ぽな ぽなぽっぽ ぽなぽっぽっぽ といった文字列を、全て「Ponapalt」に置換することを考えましょう。 まずは、マッチする正規表現を考えます。 これはもう、すぐに出てくるのではないでしょうか。 ぽな(ぽっ)*ぽ? でいいですね。 そうしたら、検索する文字列としてその正規表現を、置換する文字列として 「Ponapalt」を入れて、置換を行えばいいだけです。 正規表現テスターで行う場合は、「正規表現」「置換表現」をそれぞれ画面の ように入れて、「置換!」を押してみてください。 だけど…ですが、これではあまり面白くないですね。 実は、正規表現で置換を行う場合、置き換え後の文字列の側にも、一定の メタ文字を使うことができます。 それを覚えると、一気に応用が利くようになります。 まずはおさらい第4回で学んだ、「まとめて一つ」を表す、 () この記号。第4回では、この記号には二つの役割があると言いました。
第4回で学んだのは「まとめて一つ」、グループ化の役割でした。 キャプチャしたものを呼び出すさて、置き換え後の文字列で使えるメタ文字、それは、 「キャプチャしたものを呼び出す」メタ文字です。 $1~$9 キャプチャ1番目~9番目 ここで注意。 使っているエディタのヘルプで、「置換表現」「後方参照」といった用語を探して、 「$」と「\」のどちらを使うのか調べておいてください。 さて、キャプチャしたものを呼び出す、とはどういうことか。 次のような例を考えてみましょう。 <a href="01234.html">へもぐろびん</a> <a href="56789.html">もののけ</a> <a href="keno.html">けのけの</a> <a href="pona.html">ぽなぽな</a> さて、このテキストから、リンク先のファイル名(01234.htmlとか)だけを 抜き出したいとします。置換でやるには、 <a href="01234.html">へもぐろびん</a> → 01234.html <a href="56789.html">もののけ</a> → 56789.html <a href="keno.html">けのけの</a> → keno.html <a href="pona.html">ぽなぽな</a> → pona.html こんな形で置換できればいいですね。 そのためには、「01234.html」の部分にマッチした文字列をとっておいて (キャプチャ)、その文字列に置換(呼び出す)すれば良いわけです。 まず、検索する正規表現を考えます。 <a href="(.*)">.*</a> ここで、最初の「.*」にカッコがついていることに注目してください。 そして、置換後の文字列として、 $1 と書きます。 正規表現テスターを立ち上げ、実際にやってみてください。 応用では、応用編です。 先ほどの例文を、 へもぐろびん,01234.html もののけ,56789.html けのけの,keno.html ぽなぽな,pona.html とするにはどのようにすればよいでしょうか。 答えは、 正規表現:<a href="(.*)">(.*)</a> 置換表現:$2,$1 こうなります。
「$1」「$2」が、それぞれ、1番目、2番目に出てきたカッコと このように、普通の文字とキャプチャをうまく組み合わせることによって、 ちょっと脱線今回、慣れないとちょっとややこしいかもしれませんが、如何でしょうか。 ご指摘などはこちらへ |