Your non-greedy quantifiers won’t work like that. In both cases the lazy quantifier is followed by either nothing or only an optional atom. A non-greedy quantifier will try to stop matching as soon as it can; if *? is the last thing in the pattern, it will always successfully match nothingness and then, because nothing follows that forces it to consume more of the input, will be content to stop there. The same goes when it’s followed by a character that is made optional by ? quantifier: the *? quantifier matches nothingness, and the ? quantifier then fails to match, but that is ok, so the match succeeds, leaving you with an empty string as the capture.
(I can only recommend Mastering Regular Expressions (the owl book) – you don’t understand regular expressions until you've read that book.)
I don’t know whether you have chopped down your code any, so it might be something else that’s the culprit. You provide almost no example data to look at, so it’s hard to know what’s really going on.
Makeshifts last the longest.
In reply to Re: Help with pattern matching
by Aristotle
in thread Help with pattern matching
by mhearse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |