这个preg_match语法与“。+?”匹配的是什么

I know perl style regular expresions fairly well, but today I found one that I do not understand:

preg_match('/^On.+?wrote:.+?$/i',$line); //reduced example

What does the .+? mean? I undarstand the .+ alone, I understand .? alone. But .+?? It seems a bug to me.

The line should match popular citation prefixes in the email body and it is much more complicated along with look behinds, but this is the only part i can't understand, and still the regexp seems to work correclty.

+ means one or more and is greedy. +? means the same, it just is not greedy like usual regex are.

Edit: I wanted to explain it a little further, but the comment of deceze already explains enough.^^

In short, when you add ? its matching least amount possible, where as without ? its matching most amount possible:

Here is the explanation:

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  .+?                      any character except 
 (1 or more times
                           (matching the least amount possible))
--------------------------------------------------------------------------------
  .+                       any character except 
 (1 or more times
                           (matching the most amount possible))

Lazy not Greedy

.+? matches any character (except newline)

Quantifier: Between one and unlimited times, as few times as possible, expanding as needed [lazy]

check at regex101.com