I was able to solve a problem.
Thank you for advice.
----- Original Message -----
From: "Philip Hazel" <ph10@???>
To: "Hiroshi OHNO" <hiroshi@???>
Cc: <pcre-dev@???>
Sent: Tuesday, August 26, 2008 8:30 PM
Subject: Re: [pcre-dev] Is the PCRE_CASELESS option invalid in Lookahead assertions?
> On Tue, 26 Aug 2008, Hiroshi OHNO wrote:
>
>> I attach the small program. (I use PCRE in Fedora9)
>> The result of this program is different from the regular expression of Perl.
>> Is the first result of this program right?
>
> Which release of PCRE? The current release (7.7) behaves just like Perl:
>
> $ pcretest zz
> PCRE version 7.7 2008-05-07
>
> /^(?!JP)[a-z]*$/i
> jp
> No match
> JP
> No match
> cn
> 0: cn
> CN
> 0: CN
>
>
>> int main(int argc, char *argv[])
>> {
>> int i;
>> for(i = 1; i < argc; i++) {
>> const char *errptr;
>> int erroffset;
>> pcre *preg = pcre_compile("^(?!JP)[a-z]*$", PCRE_CASELESS, &errptr, &erroffset, NULL);
>> if(preg == NULL) {
>> if(errptr) {
>> printf("Error:%s\n", errptr);
>> }
>> continue;
>> }
>>
>> pcre_extra extra;
>> int rc;
>> if((rc = pcre_exec(preg,&extra, argv[i], strlen(argv[i]), 0, 0, NULL, 0)) >= 0) {
>
> You are calling pcre_exec() with "extra" unset. This could cause
> trouble. Try using NULL instead.
>
>> printf("match(%d):'%s'\n", rc, argv[i]);
>> } else {
>> printf("unmatch(%d):'%s'\n", rc, argv[i]);
>> }
>> pcre_free(preg);
>> }
>>
>> return 0;
>> }
>
>
> Philip
>
> --
> Philip Hazel
>