On Wed, Nov 21, 2001 at 02:25:35PM +0100, Louis Pouzin wrote:
> Hi,
> 
> I can't figure out what's wrong in the following. Any hint ?
> 
> Thanks
> 
> Here is a script:
> 
> #!perl -w
> my $days = "Mon|Tue|Wed|Thu|Fri|Sat|Sun";
> while (<DATA>) {$lin = $_;
>       /^Date:\s+$days,\s+(\d\d?)/o && do {
>               print $lin;
>               print "dat1: $& \n";
>               print "dat2: $1 \n";
>               print "-------\n";
>       }
> }
> 1;

Expanding out your regex:

/^Date:\s+Mon|Tue|Wed|Thu|Fri|Sat|Sun,\s+(\d\d?)/

Conjunction in a regex has higher precedence than alternation, so your
regex is parsed as:

/(?:^Date:\s+Mon)|(?:Tue)|(?:Wed)|(?:Thu)|(?:Fri)|(?:Sat)|(?:Sun,\s+(\d\d?))/


You need to put parens around the matching of the days.


Ronald

Reply via email to