In order to fix issue of montezuma, http://code.google.com/p/montezuma/issues/detail?id=3, I suppose I found a bug of cl-ppcre.
CL-USER> (cl-ppcre:scan
(cl-ppcre:create-scanner
"(\\w+)*\\@\\w+") "______________________________________"
:start 0)
;; Evaluation aborted.
It hangs when the number of underscore hit a critical value.
I speculate that '\w' includes underscore in regular expression would account for this
bug. and replace with other character of '\w' also has this problem.
CL-USER> (cl-ppcre:scan (cl-ppcre:create-scanner
"(a\\w+)*\\@\\w+") "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
:start 0)
;; Evaluation aborted.
but if I eliminate the last \w, it is OK.
CL-USER> (cl-ppcre:scan
(cl-ppcre:create-scanner
"(_\\w+)*\\@") "_______________________________________"
:start 0)
NIL
I also check it in perl, Maybe perl is more efficient in regular expression operation, I raise the number of
underscores, but it is OK.
$str = "john._______________________________________
__________________________________";
if ($str =~ m/(_*\w+)*\@\w+/)
{
print "ok\n";
}
Please check it and give your comment.
片云天共远永夜月同孤