[Tokyo.pm] today's one-liner quiz
Inaba Hiroto
inaba @ st.rim.or.jp
2000年 2月 11日 (金) 18:42:29 CST
稲葉です。
scozens @ pwj.co.jp wrote:
>Regexpについて、最近 Text::Balanced のような bracket matchingをしたかった。
>こういうことが
>かいてしまいました:
ですが、matchingはうまくいっていると思いますが、replaceが正しくないようです。
深さ3以上のnestがあるとうまくいきません。
一応以下のようにしてみました:
sub p {
local $_=shift;
my $n=shift||1;
s{(?{$b=1})
\{
( (?:
(?: \{ (?{$b++}) )+
|
(?: \} (?{--$b}) )+
|
(?(?{$b}).)
)+ )
\}
}{
"OPEN($n){".p($1,$n+1)."}($n)CLOSE"
}sexg;
return $_;
}
# 「use strict」しても$bは警告もされないんですね。
--
稲葉 浩人 Inaba Hiroto <inaba @ st.rim.or.jp>
Tokyo-pm メーリングリストの案内