正規表現 | spin on the RITZ

正規表現

リャマ本(表紙にリャマが載ってるから・Perl入門の名著)を読んでお勉強中なんですが



正規表現で軽く詰まったorz



覚えることたくさんで大変でございます。明日C++のレポート出さなきゃいけないのにやってない。まぁ、10分くらいでやるのでいいです


正規表現の章で、文字列の置換を「カンタンに」行えることがわかったので、Cで作ったHTMLコンバータをPerlで書いてみる

#!/usr/bin/perl

%map = (
        "&"  => "&" ,
        """ => "\"",
        "&lt;"   => "<" ,
        "&gt;"   => ">",
);

print "<pre>\n";
foreach $str (<>) {
        foreach (sort keys %map) {
                $str =~ s/$map{$_}/$_/g;
        }
        print $str;
}
print "</pre>\n";




多分ちゃんと動くはず!どこか問題があれば教えてくださると嬉しいです。

「ここはこうすると省略出来るよ~」とかも教えてくださると嬉しいです。



ひとつの行に対して「&」、「"」、「<」、「>」の処理を行っているので、あんまり宜しくないと思います。いっぺんにする方法はないんでしょうか。

さらに、処理する順番では「&」を一番最初にしないといけないのでsortで「&amp;」が最初にくるようにしておいた



もっとスマートに出来る筈




それでも、Cで50~60行かかってたプログラムが20行かからないってのは凄い。

っつーか文字列いじるのすごい楽