From: "Nobuyoshi.Nakada" Date: 2000-09-12T12:56:03+09:00 Subject: [ruby-list:24923] Re: 正規表現の {,n} なかだです。 At Tue, 12 Sep 2000 12:42:44 +0900 WATANABE Hirofumi wrote: > :/a{,2}/ === 'a' #=> nil > :となるのですが、マッチしないのなら間違った正規表現として > :エラーにした方がいいのではないでしょうか? > > そうかな? > /a{,2}/ === 'a{,2}' #=> 0 > なんだし, 間違ってはいないでしょう. > Perl も同じです. /a{,2}/ == /a{0,2}/ かと思ってました。upper_bound は省略できるので lower_bound も同じだとばかり。 # つまり、こう思ってた。 diff -pruPX ./.excludes current/regex.c devel/regex.c --- current/regex.c Thu Sep 7 15:59:36 2000 +++ devel/regex.c Tue Sep 12 12:47:19 2000 @@ -1954,11 +1954,12 @@ re_compile_pattern(pattern, size, bufp) /* Interval such as `{1}' => match exactly once. */ upper_bound = lower_bound; - if (lower_bound < 0 || c != '}') + if ((lower_bound < 0 && upper_bound < 0) || c != '}') goto unfetch_interval; if (lower_bound >= RE_DUP_MAX || upper_bound >= RE_DUP_MAX) FREE_AND_RETURN(stackb, "too big quantifier in {,}"); + if (lower_bound < 0) lower_bound = 0; if (upper_bound < 0) upper_bound = RE_DUP_MAX; if (lower_bound > upper_bound) FREE_AND_RETURN(stackb, "can't do {n,m} with n > m"); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦