木村です。
#次当りは ruby-devのが良いかも…

	In: [ruby-list:6777] 

>|perl 5.005でさらに拡張部分が増えそうなんですが、追いかける
>|のでしょうか? ^^;
>|# 5.004_58の時点で5つばかり追加されてます。
>
>えっ…(しばし絶句)….
>
>Perl5で拡張正規表現が導入されてからruby 1.1で追いつくまで数
>年ありましたから,今回も数年程度は待って頂くことになるかと….
>
>|#お手伝いできればいいんでしょうけど…足手まといか^^;
>

>歓迎します.ただ,あのemacs正規表現ルーチンに拡張正規表現を
>追加するのは難儀なんだよなあ.あれは一種のバイトコードインタ
>プリタなので,Perlのような再帰的手法がまったく使えないんです.

作業がバッティングしてる人はいないと思うのですが、念のため。
とりあえず lookbehindは実装*できてしまった* ^^; みたいです。
試しに

  str = "Isac Asimov"
  print /(?<!Isac )Asimov/ =~ str, "\n";
  print $&, "\n"
  print /(?<=Isac )Asimov/ =~ str, "\n";
  print $&, "\n"

というスクリプトを実行すると

  false
  nil
  5
  Asimov

となります。*できてしまった*だけあって、まだかなり怪しい部分が
あるのと、まだ手を付けてないものがあるのでパッチは改めて出します。

これに関連して、まつもとさんに質問があります。

rubyで使用している regexルーチンは、GNUのregexですよね? ファイル
先頭のコメントを見て判断する限りでは t^2さんがマルチバイト対応さ
れた sed, gawk, grepのいずれかから持って来ていると思いますが、あ
ってますか? 

あっていたとして、恐らくちょっと古め(つまり、t^2さんが手を入れて
いた最後のバージョン)ではないと思われるのですがなぜでしょうか?

というのは、最新(最終?)のものであればPOSIXで定義されている[[:alpha:]]
みたいなものが使えるようになっているのですが、それが現状の ruby
が使用しているregexには見当たらないからです。
#わたなべさんからperl 5.004_60でこれが追加されたらしい(自分では確
#認してません)という話を聞いたのですが、新しいものを使っていれば
#これに関する手間はなかったのにな。と思ったわけです^^;

最後に、実装に挑戦している拡張表記を挙げておきます(perl5.004_58
のperlre.podから抜き取りました)。

=item C<(?<=regexp)>

A zero-width positive lookbehind assertion.  For example, C</(?=\t)\w+/>
matches a word following a tab, without including the tab in C<$&>.
Works only for fixed-width lookbehind.

=item C<(?<!regexp)>

A zero-width negative lookbehind assertion.  For example C</(?<!bar)foo/>
matches any occurrence of "foo" that isn't following "bar".  
Works only for fixed-width lookbehind.

=item C<(?{ code })>

Experimental "evaluate any Perl code" zero-width assertion.  Always
succeeds.  C<code> is not interpolated.  Currently the rules to
determine where the C<code> ends are somewhat convoluted.

=item C<(?E<gt>regexp)>

An "independend" subexpression.  Matches the substring which a
I<standalone> C<regexp> would match if anchored at the given position,
B<and only this substring>.

=item C<(?(condition)yes-regexp|no-regexp)>

=item C<(?(condition)yes-regexp)>

Conditional expression.  C<(condition)> should be either an integer in
parentheses (which is valid if the corresponding pair of parentheses
matched), or lookahead/lookbehind/evaluate zero-width assertion.


lookbehind以外はまだ全然手を付けてません。

-- 
木村浩一
            May the source be with you.
    e-mail kbk / kt.rim.or.jp
           kkimura / pure.cpdc.canon.co.jp