[Tokyo.pm] look-behind in mg pattern, and relative backreference

Kazumasa Utashiro utashiro @ iij.ad.jp
2002年 3月 3日 (日) 07:37:07 CST


mg で look-behind のパターンを指定できるようにしました (いい加減な実装
ですが)。ついでに -f で指定するファイルで # で始まるコメントを使えるよ
うにしました。

これで、パターンファイルの中で、こんな風に指定することができるようにな
ります (現在翻訳作業中のデータからの抜粋)。

######################################################################
(は|が|に|を)\1
(?<!.[\s:\]\\]|、|。|」)\(
\)(?!。|、|―」|[\\\s.?,;:_(){}\[\]])
送信元
宛先
マシン(?!ガン)
(?<!ネットワーク)コンピュータ(?!セキュリティ|グラフィックス|ショップ|ゲーム)
######################################################################

最後の行は、「ネットワークコンピュータ」とか「コンピュータセキュリティ」
はいいけど「コンピュータ」は「計算機」とすべきなので発見するためのもの
です。

で、まあ、興味のある人は

	http://www.srekcah.org/~utashiro/perl/scripts/mg/ 

から持って行って頂ければいいんですが、それはそれとして、一つ質問があり
ます。

上のパターンの中で、最初の行に \1 が含まれています (何のためかについて
は http://www.jin.gr.jp/~nahi/src/mre.html をどうぞ)。mg は perl5.6 以
上で実行された場合には、それぞれの行を単純に | でつないでパターンを作
ります (それより古い処理系ではもっと複雑)。

なので、次に同じような参照をする場合には、\2 を使わなければならないし、
とにかく最初から括弧の数を数えないといけないわけです。で、できれば、こ
れをどこに何度どういう順番で置いても同じように指定したいと思うのが人情
なわけですが、そういう方法はあるんでしょうか?

たとえば、\-1 で1つ前の括弧が参照できればいいんでしょうけど。

--utashiro



Tokyo-pm メーリングリストの案内