よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

December 15, 2003 [おもひで]

[Ruby-GNOME2] 正規表現でWarning

rbbrの要望をruby-talkで受けてふと思ったんだけど、以下のような不正な正規表現が与えられたことを知る方法ってあるのかな。

ruby -e '/]/'
-e:1: warning: regexp has `]' without escape

この場合、気持ち的には例外とか出てくれるとうれしいんだけどRegexpErrorじゃ拾えないのかなー?

begin
   /]/
rescue RegexpError
   "error"
end

本日のツッコミ(全4件) [ツッコミを入れる]
kjana (December 16, 2003 16:48)

警告を黙らせる事はできますけどね....<br><br> > ruby -e '$stderr=File.open("/dev/null", "w"); /]/'<br> -e:1: warning: regexp has `]' without escape<br> > ruby -e '$stderr=File.open("/dev/null", "w"); a="]"; /#{a}/'<br> > <br><br>最初ので黙らないのは parse 時点で警告してて $stderr が<br>まださしかわってないから?

なかだ (December 16, 2003 18:16)

# 1.8.1限定 & thread-UNsafe<br><br>def Regexp.warn?(str)<br> class << (warning = "")<br> alias write <<<br> end<br> verbose, $VERBOSE = $VERBOSE, true<br> stderr, $stderr = $stderr, warning<br> compile(str)<br> warning[__FILE__.size..-1].sub(/\A:\d+:\s*/, '').chomp unless warning.empty?<br>ensure<br> $stderr = stderr<br> $VERBOSE = verbose<br>end

むとぽん (December 16, 2003 22:22)

スゲー。いただきマス。

むとぽん (December 17, 2003 01:12)

ってか、ensureってそのレベルで書けたんですね....。知りませんでした(-o-;)。


編集