I'm a little confused about regular expressions and greedy vs lazy. It's really very simple and it feels like I'm missing something obvious.
I've simplified my problem as much as I can to make it clear. Consider the following string and regex pattern.
string:
aaxxxb
pattern:
(?<=a)(.*?)(?=b)
result:
axxx
what I expected:
xxx
This result is what I would expect from using .* instead of .*?, what am I missing?
Obviously, same thing if I use a.*?b gives me aaxxxb. Why is this? Shouldn't lazy (like .*?) return as few characters as possible?
See Question&Answers more detail:os