(.*) - найти любой субпаттерн
Такое выражение называется "greedy" - "жадное" потому что оно хавает субпаттерн между самым первым и самым последним матчем
Например
<a>1</a> бла бла <a>2</a>
Если выцепляем все что между <a> то "жадный" регексп выдаст
<a>1</a> бла бла <a>2</a>
Чтобы он выдавал то что мы ожидаем - дописываем один из следующих qualifiers: *?, +?, ??, or {m,n}?, который значит дословно "match as little text as possible"
<a>1</a> бла бла <a>2</a>