On Tue, 2004-06-01 at 11:05, Allen, Greg wrote:
> Think it might be bust when year contains a 9.
> 
> e.g. year = 2009
> 
> $c = 9+1 = 10

Indeed... :-) Should have tested more :-)

> qr/^\d*(?:${1}${2}${3}[$c-9]...
> is:
> qr/^\d*(?:200[10-9]...
> 
> and [10-9] matches any digit, so 2000, 2001 etc. would incorrectly pass.
> 
> Greg
> 
> 
> -----Original Message-----
> From: Jose Alves de Castro [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, June 01, 2004 10:53 AM
> To: [EMAIL PROTECTED]
> Subject: Regular expression for years after a given one
> 
> 
> Yesterday, a friend of mine was toying around with some Perl code, when
> he got to a function which would only accept a regular expression. He
> said:
> 
> "How can I say that I want every single year after the one I have? It's
> impossible..."
> 
> To which I replied:
> 
> "Nothing is impossible! Especially in Perl! ;-) " (ok, maybe these
> weren't my words at the time, but they seem cool now, right? :-) )
> 
> So after a couple of minutes, this is what I came up with:
> 
> 
> $year = 2004; # I'm stating it directly to improve clarity
> 
> $year =~/(\d)(\d)(\d)(\d)/;
> 
> ($c,$d,$e,$f) = ($4+1,$3+1,$2+1,$1+1);
> 
> $regex =
> qr/^\d*(?:${1}${2}${3}[$c-9]|${1}$2[$d-9]\d|$1[$e-9]\d{2}|[$f-9]\d{3})$/;
> 
> 
> and that does the trick :-)
> 
> Thought I should share this with you guys :-) Thoughts are welcome :-)
> 
> 
> BTW: This was made so it would work with $year consisting of four
> digits... any care to make it generic? :-)
> 
> 
> Regards,
> 
> jac
-- 
Josà Alves de Castro <[EMAIL PROTECTED]>
Telbit - Tecnologias de InformaÃÃo

Reply via email to