in reply to Why machine-generated solutions will never cease to amaze me
(Updated: Added quotation for context; added conclusion.)
Regarding:
And try as I might, I can't find a string that behaves differently between the two. I've tried all the possibilities I can think of, like sadad salalad saladad slad sal, but they behave identically. I still have a nagging doubt that there may be a difference; if anyone can point it out I be most appreciative.There's no difference because we can prove that the regular expressions are equivalent for any atomic regexes x and y (when constrained to all-or-none matching, which is the case in the original poster's question):
(x|y)? === (x?|y) === (x|y?)The proof goes as follows. (Note: I use (x) instead of (?:x) to denote grouping.)
(The proof for the (x?|y) case follows immediately from regex union being commutative.)
To use your example, let x = (?:al) and y = (?:pre) and the same proof applies. That's why you can't find a string that matches s(?:al|pre)?ad differently than s(?:(?:al)?|pre)ad – there isn't one.
Sometimes it's easier to go after the proof than the counterexample. : )
Cheers,
Tom
Tom Moertel : Blog / Talks / CPAN / LectroTest / PXSL / Coffee / Movie Rating Decoder
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Why machine-generated solutions will never cease to amaze me
by hv (Prior) on Nov 11, 2004 at 13:34 UTC | |
by tmoertel (Chaplain) on Nov 11, 2004 at 16:18 UTC |