Hi Mike, Do you get the same results for a search pattern of 'A|B'?
On Wed, 9 Mar 2005 11:11:57 -0800, Mike Hall <[EMAIL PROTECTED]> wrote: > I'm having some strange results using the "or" operator. In every test > I do I'm matching both sides of the "|" metacharacter, not one or the > other as all documentation says it should be (the parser supposedly > scans left to right, using the first match it finds and ignoring the > rest). It should only go beyond the "|" if there was no match found > before it, no? > > Correct me if I'm wrong, but your regex is saying "match dog, unless > it's followed by cat. if it is followed by cat there is no match on > this side of the "|" at which point we advance past it and look at the > alternative expression which says to match in front of cat." > > However, if I run a .sub using your regex on a string contain both dog > and cat, both will be replaced. > > A simple example will show what I mean: > > >>> import re > >>> x = re.compile(r"(A) | (B)") > >>> s = "X R A Y B E" > >>> r = x.sub("13", s) > >>> print r > X R 13Y13 E > > ...so unless I'm understanding it wrong, "B" is supposed to be ignored > if "A" is matched, yet I get both matched. I get the same result if I > put "A" and "B" within the same group. > > > On Mar 8, 2005, at 6:47 PM, Danny Yoo wrote: > > > > > > >> > >> Regular expressions are a little evil at times; here's what I think > >> you're > >> thinking of: > >> > >> ### > >>>>> import re > >>>>> pattern = re.compile(r"""dog(?!cat) > >> ... | (?<=dogcat)""", re.VERBOSE) > >>>>> pattern.match('dogman').start() > >> 0 > >>>>> pattern.search('dogcatcher').start() > > > > > > > > Hi Mike, > > > > Gaaah, bad copy-and-paste. The example with 'dogcatcher' actually does > > come up with a result: > > > > ### > >>>> pattern.search('dogcatcher').start() > > 6 > > ### > > > > Sorry about that! > > > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > -- 'There is only one basic human right, and that is to do as you damn well please. And with it comes the only basic human duty, to take the consequences. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor