You need to make your regex ungreedy by changing ".+" to ".+?" like this:

Code:
//noop $regex(title,%string,/<span class="title">(.+?)<\/span>/ig)


You can see the difference between the two by typing these two commands:

Code:
//var %string = <span class="title">abc</span><span class="anotherspan">def</span> | noop $regex(title,%string,/<span class="title">(.+?)<\/span>/ig) | echo -a $regml(title,1)
//var %string = <span class="title">abc</span><span class="anotherspan">def</span> | noop $regex(title,%string,/<span class="title">(.+)<\/span>/ig) | echo -a $regml(title,1)


Mine (ungreedy): abc
Yours (greedy): abc</span><span class="anotherspan">def

A greedy regex matches as much data as it possibly can, while an ungreedy regex matches as little data as it possibly can. This is why yours matches up to the final </span> and mine only matches up to the first </span> smile