e$BLZB<$G$9!#e(B
1.9e$B$NJ}$N$_$G$9$,!"e(B
ruby -e “/a(?=b)?/.match(‘a’)”
e$B$H$+e(B
ruby -e “/a(?=b?/.match(‘a’)”
e$B$H$7$?$H$-$K!"e(B
0: uninitialized Regexp (TypeError)
e$B$H$$$&E,@Z$G$O$J$$$G$"$m$&%(%i!<%a%C%;!<%8$,=PNO$5$l$^$9!#e(B
ruby 1.9.0 (2007-07-30 patchlevel 0) [i386-mswin32_71] e$B$G3NG’!#e(B
e$B$3$l$O54<V$,JV$7$F$$$k%(%i!<%a%C%;!<%8$r0.$j$D$V$7$F$7$^$C$F$$$k$?$ae(B
e$B$G$9!#0J2<>:Y!#e(B
VALUE
rb_reg_compile(const char *s, long len, int options, const char *file,
int line)
{
VALUE re = rb_reg_s_alloc(rb_cRegexp);
char err[ONIG_MAX_ERROR_MESSAGE_LEN];
if (rb_reg_initialize(re, s, len, options, err) != 0) {
VALUE desc = rb_reg_desc(s, len, re);
rb_compile_error(file, line, “%s: %s”, err, RSTRING_PTR(desc));
}
FL_SET(re, REG_LITERAL);
return re;
}
e$B$3$3$N!“e(Brb_reg_initilize
e$B7PM3$G@55,I=8=$r%3%s%Q%$%k$7$?$H$-$Ke(B
e$B54<VB&$N%(%i!<$K$J$jLa$jCM$,e(B
-1e$B!”%(%i!<$N860x$rI=$954<VB&$+$i$N%a%C%;!<e(B
e$B%8$,e(B erre$B$K@_Dj$5$l$k$N$G$9$,!"e(B
e$B<!$K8F$S=P$7$F$$$ke(B rb_reg_desc e$B$NCf$Ge(B
if (re) {
rb_reg_check(re);
e$B$He(B rb_reg_check e$B$r8F$S=P$7!"$=$Ne(B rb_reg_check e$B$Ge(B
rb_reg_check(VALUE re)
{
if (!RREGEXP(re)->ptr || !RREGEXP(re)->str) {
rb_raise(rb_eTypeError, “uninitialized Regexp”);
}
}
e$B$He(B rb_raise e$B$7$F$7$^$C$F$$$k$N$G!"e(B
0: uninitialized Regexp (TypeError)
e$B$H$$$&%a%C%;!<%8$@$1=PNO$5$l$F=*$o$j$K$J$C$F$7$^$$$^$9e(B
(rb_compile_errore$B$,8F$S=P$5$l$J$$e(B)e$B!#e(B
rb_reg_initialize e$B$G<:GT$7$?e(B(not
0e$B$,JV$C$F$-$?e(B)e$B$H$-$NBP=h$rJQ$($k$+e(B
rb_reg_desce$BFbIt$NH=Dj$rD4@a$9$l$PNI$$$H;W$$$^$9$,!"6qBNE*$J=$@5J}K!e(B
e$B$O$*G$$;$7$^$9!#e(B