You can always simplify (?:(?:foo)) to (?:foo). On Sun, Jan 25, 2009 at 7:13 PM, Shmuel Fomberg <[email protected]> wrote: > Thanks for the answer. > > What about the: > (?: > # Allow both :: and ' in namespace separators > (?: \' (?!\d) \w+ | \:: \w+ ) > )* > > does the double parenthesis do something, or can it be collapsed to: > > # Allow both :: and ' in namespace separators > (?: \' (?!\d) \w+ | \:: \w+ )* > > ? > > Shmuel. > > > > Yitzchak Scott-Thoennes wrote: >> On Sat, January 24, 2009 4:40 pm, Shmuel Fomberg wrote: >>> Is it correct that this regex: >>> >>> $content =~ /^( >>> [...@%&*] >>> (?: : (?!:) | # Allow single-colon non-magic vars >>> (?: \w+ | \' (?!\d) \w+ | \:: \w+ ) >>> (?: >>> # Allow both :: and ' in namespace separators >>> (?: \' (?!\d) \w+ | \:: \w+ ) >>> )* >>> (?: :: )? # Technically a compiler-magic hash, but keep >>> #it here >>> ) >>> )/x; >>> >>> is the same is this? >>> >>> $content =~ /^( >>> [...@%&*] >>> (?: : (?!:) | # Allow single-colon non-magic vars >>> (?: \w+ | \' (?!\d) \w+ | \:: \w+ ) >>> ) >>> # Allow both :: and ' in namespace separators >>> (?: \' (?!\d) \w+ | \:: \w+ )* >>> (?: :: )? # Technically a compiler-magic hash, but keep it here >>> )/x; >> >> No, the second one continues on after a single colon to look for a namespace >> separator, etc, where the first one would have stopped. So when $content >> is "$:'a", one matches two characters and one matches all four. >> >> To show the difference more simply, you are asking if >> >> ( A (?: B | C D ) ) >> >> is the same as >> ( A (?: B | C ) D ) >> >> Moving D makes it matched after B or C instead of just after C. >> >> _______________________________________________ >> Perl mailing list >> [email protected] >> http://perl.org.il/mailman/listinfo/perl >> > > _______________________________________________ > Perl mailing list > [email protected] > http://perl.org.il/mailman/listinfo/perl >
-- Gaal Yahas <[email protected]> http://gaal.livejournal.com/ _______________________________________________ Perl mailing list [email protected] http://perl.org.il/mailman/listinfo/perl
