[ruby-list:543] Re: /^$/ doesn't match null line ?

From: matz@... (Yukihiro Matsumoto)
Date: 1996-09-19 10:42:22 UTC
List: ruby-list #543
In message "[ruby-list:537] Re: /^$/ doesn't match null line ?"
    on 96/09/19, Yukihiro Matsumoto <matz@caelum.co.jp> writes:

||perl -ne 'print "null line\n" if /^$/' hoge
||
||とすると、空行でnull lineがプリントされますが、
||rubyで同じことをやるとすべての行にマッチしてしまいます。
|
|今調べましたところbaseにしているemacsのregxpルーチンの
|misfeatureであることが分かりました.
|
|  (string-match "^$" "aaa\n")
|   => 4
|
|がマッチしてしまいます.早急に対策を立てますが,とりあえず

良く調べてみると

  "aaa\n"

の"\n"と文字列の末尾の間の /^$/ にマッチしていたようです.確
かにそういう見方もできますね.しかし,それでは都合が悪いので,
仕様を変更して文字列末尾の /^$/ にマッチしないようにしました.

以下のパッチで直ります.多分,正常に動作すると思うのですが,
問題があれば教えてください.

                                まつもと ゆきひろ /:|)

--- regex.c.orig	Thu Sep 19 19:36:28 1996
+++ regex.c	Thu Sep 19 19:22:51 1996
@@ -1803,5 +1803,5 @@
 
       if (range >= 0 && startpos == size
-	  && fastmap && pbufp->can_be_null == 0)
+	  && fastmap && pbufp->can_be_null != 1)
 	return -1;
 

In This Thread

Prev Next