2009-03-23 12:48 追記
サンプルコードを修正しました.(thanks to @clairvy)
サンプルコードを修正しました.(thanks to @clairvy)
はじめに
正規表現を使う方法の一つとして、qr// (quote regex) 演算子というのがあります。
正規表現愛 – にぽたん研究所
上記のエントリとか モダンPerl入門 とかを読んで qr// 演算子の存在を今さらながら知ったので,練習に励む(?)今日この頃,というか今日.
3月に入って何もアウトプットしていないので,メモだけでも.
メモ
とりあえず次のような感じで使ってみてます.
my $re = { null => qr{^\s*$}, trim => qr{^\s* (\S(?:.*\S)?) \s*$}x, int => sub { # 1引数: \d{m}, 2引数以上: \d{m,n}, 引数なし] \d{1,} my $mn = join ',', @_ ? ( $_[2] ? @_[0,1] : @_ ) : ( 1, '' ); qr{^\s* (\d{$mn}) \s*$}x; }, }; my $hoge = ''; my $fuga = ' ほげほげ ふがふが '; my $foo = '2009'; my $bar = ' 2008'; # 空白文字だけ if( $hoge =~ $re->{null} ) { print '空白文字だけ.'; } # 文字列の両端の空白を除去する my $fuga_trimmed = sprintf '%s', $fuga =~ $re->{trim}; # 指定した桁数(の範囲)の整数としてマッチさせ,ついでに両端の空白も除去する my $foo_int = sprintf '%d', $foo =~ $re->{int}->(4); my $bar_int = sprintf '%d', $bar =~ $re->{int}->(2,4);
おわりに
個人的には,
qr/.../;
よりも
qr{...};
で書くことがほとんどですね..
参考
-
モダンPerl入門 (CodeZine BOOKS)posted with amazlet at 09.03.22牧 大輔
翔泳社
売り上げランキング: 7230


qr{…}; に同意.
なんだけど,最近 qw/ … / とかをよく見るような気がするので,// 派に転向しそうになってる派です.
http://search.cpan.org/~ribasu.....x/Class.pm
とか.
http://search.cpan.org/~mrambe.....atalyst.pm
とか.
長いものに巻かれろ派です.
@clairvy
これまで ‘/’ を含む文字列をパタンマッチにかける機会が多かった,というのが,’{}’ で囲むようになった唯一の理由ですね.
しかしよく考えると,’{}’ と打つのと ‘//’ と打つのとでは,打鍵や指の移動の量がけっこう違うんですよね.最近その辺が気になりだしてますw
ということで,明らかに ‘/’ を含まないような文字列を対象とする場合くらいは ‘//’ で囲うクセをつけてもいいよね,とか思っていたりはします.
ふむふむ.打鍵数もそうか.
大方の場合は // で良いのかもしれませんね.
どうでもいい短所としては,// だとエディタとかが良い感じにパースしてくんなかったり.というのがちょっと嫌な感じかもですね.上のとか.