Wenn Du mit den Fehlern leben willst, die das Parsen von HTML mit Regex mit sich bringen kann (bzw. mit sich bringt), kannst Du folgenden Regex versuchen:
$text =~ s{(?:<br\s+/>)?(\s*</?(?:[uo]l|li)>\s*)(?:<br\s+/>)?}{$1}gi;
Anpassungen für enthaltene Attribute oder Verwendung des Punkt als Platzhalter bitte selber vornehmen!
Wenn Du es sauber lösen willst, solltest Du Dir ein Parser-Modul anschauen, z.B.
HTML::Parser.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!