> -----Original Message----- > From: Nikola Janceski [mailto:[EMAIL PROTECTED]] > Sent: Wednesday, July 31, 2002 11:27 AM > To: Beginners (E-mail) > Subject: regex capturing > > > $\ = "\n"; > $date = "20020731"; > print join "/", ($date =~ /(\d{4})(\d{2})(\d{2})/)[1,2,0]; # > this works > print join "/", ($date =~ /(\d{4})(\d{2}){2}/)[1,2,0]; # this doesn't > > __END__ > > why did the second pattern not capture the second occurance of \d{2} ?
But it does capture the second occurrence (the 31). It doesn't capture the first (the 07). In the absence of /g, it would seem that since there are only two sets of parens in the second regex, only two values can be captured. The {2} quanitifier would simply cause $2 to be "reused". > Is this the correct action? or should it capture the second one in the > second example? > Is there a way to capture like so (like second example as I > expected it to > work)? I would think /g would have to be used somehow, but I do not know how. Of course, the simple: /(\d{2})/g works, returning '20', '02', '07', '31'. But that's not what you're after. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]