[Tokyo.pm] look-behind in mg pattern, and relative backreference
maeda @ tokyo.pm.org
maeda @ tokyo.pm.org
2002年 3月 4日 (月) 19:53:12 CST
前田です。
歌代さん> (は|が|に|を)\1
/はは|がが|にに|をを/ とするのが一番わかりやすいのは確かでしょうが、
まあそれは置いといて。
歌代さん> たとえば、\-1 で1つ前の括弧が参照できればいいんでしょうけど。
どうしてもこれをやりたければ、(?{ code })を使うしかないかなあ。
こんなの↓やってみたんですが、Perl5.6.1と5.7.2ではperlがコアダン
プしてしまいました。
while (<>) {
use re 'eval';
local $x = qr(x);
print $&, "\n" if /([a-d])(?{ $x=qr($^N) })(??{ $x })/x;
}
こうやったら↓できたんですけど、解としては面白くない!
while (<>) {
use re 'eval';
local %x = (a => qr(a),
b => qr(b),
c => qr(c),
d => qr(d));
print $&, "\n" if /(a|b|c|d)
(??{ $x{$^N} })/x;
}
# 5.6.1には$^Nがないので、代わりに$+を使ってみました。
------------------------------- Avatar Md+ d/=□=\. Md+
前田 薫 maeda @ tokyo.pm.org 75t 170km/h AFC50 O \*oo*/ " LG+ LG+
Tokyo.pm http://tokyo.pm.org HeatSink 15 LRM10 .=X ̄X=. LRM10
------------------------------- Armor 2164 Md+ _|_ _|_ Md+
Tokyo-pm メーリングリストの案内