Przykład użycia "Laziness Instead of Greediness": ".+?"
https://www.regular-expressions.info/repeat.html
<?php
$h='<ul>
<li>ps</li>
<li>ps</li>
<li class="klasa1 klasa2
klasa2
" >xyz</li>
<li>ps</li>
</ul>';
$pattern = '/(.*)(\<li.+?(klasa2).+?\<\/li\>)(.*)/s';
$replacement = '${1}<li>tu jest podmiana</li>${4}';
echo preg_replace($pattern, $replacement, $h);
Wynik:
<ul>
<li>ps</li>
<li>ps</li>
<li>tu jest podmiana</li>
<li>ps</li>
</ul>