"R. Joseph Newton" wrote: Sorry Diego,
Turns out that there was a logic error in the code I posted that gave a false positive on the match. > #!perl -w > > use strict; > use warnings; > > my $pat1 = qr /Hi.*?\sBye/; > # my $pat2 = qr /(Hi|[Hh]ello).*?\sBye--I'll sure miss you\!/; # Error This does not work. Becuase the space escape is not a ltieral space the smaller regex being matched against it wwill actually reject the match. This is corrected by changing the escape here to a literal space: my $pat2 = qr /(Hi|[Hh]ello).*?\sBye--I'll sure miss you\!/; > print "$pat1 is the \"smaller\" pattern\n"; > print "$pat2 is the \"larger\" pattern\n"; > print "\n"; > > if ($pat2 =~ $pat1) { > print "$pat2 contains $pat1\n"; > } else { > # print "$pat2 matches $pat1\n"; # False match generator > } > print "\n"; Corrected as: if ($pat2 =~ $pat1) { print "$pat2 matches $pat1\n"; } else { print "$pat2 does not match $pat1\n"; } print "\n"; With the corrections noted, the code does provide the same output as the original, differing only in the content of the second regex. I think the following should give a pretty accurate picture of whether one compiled regex is a true subpattern of the other, although it would take more work to identify subpatterns which originate within the larger regex, rather than at the same origin: > my $test = $pat1; > chop $test; # kill the closing paren of the canonical regex > if ($test eq substr($pat2, 0, length($test))) { > print "$pat1 is a true sub-pattern of $pat2\n"; > } else { > print "$pat1 could not be identified by this test as a true initial sub-pattern of > $pat2\n"; > } > print "\n"; > > my $string1 = "Hello, Bye--I'll sure miss you!"; > > if ($string1 =~ $pat1) { > print "$string1 matches $pat1\n"; > } else { > print "$string1 does not match $pat1\n"; > } > > if ($string1 =~ $pat2) { > print "$string1 matches $pat2\n"; > } else { > print "$string1 does not match $pat2\n"; > } > > Hi There,podner E:\d_drive\perlStuff>pat_holds.pl > (?-xism:Hi.*?\sBye) is the "smaller" pattern > (?-xism:(Hi|[Hh]ello).*?\sBye--I'll sure miss you!) is the "larger" pattern > > (?-xism:(Hi|[Hh]ello).*?\sBye--I'll sure miss you!) matches (?-xism:Hi.*?\sBye) > > (?-xism:Hi.*?\sBye) is not a true sub-pattern of (?-xism:(Hi|[Hh]ello).*?\sBye-- > I'll sure miss you!) > > Hello, Bye--I'll sure miss you! does not match (?-xism:Hi.*?\sBye) > Hello, Bye--I'll sure miss you! matches (?-xism:(Hi|[Hh]ello).*?\sBye--I'll sure > miss you!) > > Hi There,podner E:\d_drive\perlStuff> > > Joseph > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]