'<b>one</b> and <b>two</b>', the greedy pattern <b>.*</b> swallows everything between the FIRST <b> and LAST </b>. Write bold_texts(html) that correctly extracts each bold span's inner text using the lazy quantifier .*?.bold_texts('<b>one</b> and <b>two</b>')['one', 'two']
The lazy .*? stops at the nearest closing tag.
r'<b>(.*?)</b>'.
Greedy .* would return one merged wrong match — try it to see.