なかだです。

現状こうなっていて実際失敗するのですが、Perlではマッチするよう
になってるようです。

    case OP_PUSH_LOOK_BEHIND_NOT:  STAT_OP_IN(OP_PUSH_LOOK_BEHIND_NOT);
      GET_RELADDR_INC(addr, p);
      GET_LENGTH_INC(tlen, p);
      q = MBBACK(encode, str, s, (int )tlen);
      if (IS_NULL(q)) {
	/* I decided to too short case -> fail. ex. /(?<!XXX)a/.match("a")
	   If you want to change to success, replace following line. */
	goto fail;
	/* p += addr; */
      }

$ perl -e 'print "a" =~ /(?<!XXX)a/, " ", $&, "\n"'
1 a


			       *


よく調べてないのですが、逆方向に探すのではなくてlookbehindのア
ンカーを終端として先頭からマッチさせる、というのではうまく行か
ないでしょうか。これならExact match以外のパターンも使えそうな気
がするのですが。

たとえば/(?=[a-z]+):/なら、/[a-z]+\z/ =~ str[0...(/:/ =~ str)]
みたいな感じ。内部的には\zとは別の表現が必要でしょうが。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦